2005-04-16 15:20:36 -07:00
|
|
|
|
2005-08-28 20:18:39 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-11-10 16:21:38 -08:00
|
|
|
|
2007-10-16 11:14:12 +02:00
|
|
|
|
2007-01-20 16:00:28 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-04-11 13:12:34 -04:00
|
|
|
|
2006-09-28 11:29:01 -07:00
|
|
|
|
2007-12-05 16:43:06 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-25 15:33:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-08-10 16:59:10 +09:00
|
|
|
|
2006-09-25 15:33:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-08-10 16:59:10 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-17 19:34:42 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-11-14 14:14:16 -05:00
|
|
|
|
|
|
|
|
|
2006-01-17 19:34:42 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-06 19:13:52 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:02 +09:00
|
|
|
|
2006-05-15 21:03:48 +09:00
|
|
|
|
2006-05-15 20:58:02 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-12 12:21:52 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-22 00:19:33 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
|
|
|
|
|
2006-04-02 10:30:40 -04:00
|
|
|
|
2006-05-15 21:03:38 +09:00
|
|
|
|
2006-11-11 20:10:45 +09:00
|
|
|
|
libata: reimplement ACPI invocation
This patch reimplements ACPI invocation such that, instead of
exporting ACPI details to the rest of libata, ACPI event handlers -
ata_acpi_on_resume() and ata_acpi_on_devcfg() - are used. These two
functions are responsible for determining whether specific ACPI method
is used and when.
On resume, _GTF is scheduled by setting ATA_DFLAG_ACPI_PENDING device
flag. This is done this way to avoid performing the action on wrong
device device (device swapping while suspended).
On every ata_dev_configure(), ata_acpi_on_devcfg() is called, which
performs _SDD and _GTF. _GTF is performed only after resuming and, if
SATA, hardreset as the ACPI spec specifies. As _GTF may contain
arbitrary commands, IDENTIFY page is re-read after _GTF taskfiles are
executed.
If one of ACPI methods fails, ata_acpi_on_devcfg() retries on the
first failure. If it fails again on the second try, ACPI is disabled
on the device. Note that successful configuration clears ACPI failed
status.
With all feature checks moved to the above two functions,
do_drive_set_taskfiles() is trivial and thus collapsed into
ata_acpi_exec_tfs(), which is now static and converted to return the
number of executed taskfiles to be used by ata_acpi_on_resume(). As
failures are handled properly, ata_acpi_push_id() now returns -errno
on errors instead of unconditional zero.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-15 03:28:16 +09:00
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
|
|
|
|
|
2008-02-21 13:25:50 +09:00
|
|
|
|
2007-09-11 11:41:59 -07:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
2007-09-11 11:41:59 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-25 18:30:36 +09:00
|
|
|
|
2007-11-27 19:28:58 +09:00
|
|
|
|
2007-11-27 19:28:52 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-11-27 19:28:52 +09:00
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:29 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:25 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-25 19:40:05 +09:00
|
|
|
|
2007-02-07 13:46:00 -08:00
|
|
|
|
2007-05-15 03:28:15 +09:00
|
|
|
|
2007-08-15 03:57:11 -04:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
2006-06-29 01:29:30 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:57:58 +09:00
|
|
|
|
2006-06-29 01:29:30 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-01 11:50:15 +02:00
|
|
|
|
2007-10-09 15:06:10 +09:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
2006-06-29 01:29:30 +09:00
|
|
|
|
2006-07-03 16:07:27 +09:00
|
|
|
|
2007-12-15 15:05:02 +09:00
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:09 +09:00
|
|
|
|
2006-04-02 18:51:53 +09:00
|
|
|
|
2006-05-15 20:57:40 +09:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2007-10-26 16:19:26 +09:00
|
|
|
|
2006-05-15 20:57:40 +09:00
|
|
|
|
2006-05-15 20:57:58 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-27 18:42:40 +01:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2007-04-17 23:44:06 +09:00
|
|
|
|
2006-08-31 00:02:15 -04:00
|
|
|
|
2007-07-10 15:55:43 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-17 20:50:31 +00:00
|
|
|
|
|
|
|
|
|
2005-12-13 14:48:31 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-16 14:21:24 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-11-27 19:43:42 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-11-27 19:43:40 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-03-06 04:31:56 +09:00
|
|
|
|
|
|
|
|
|
2007-11-27 19:43:40 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-05 07:13:30 -04:00
|
|
|
|
|
|
|
|
|
2006-04-02 18:51:52 +09:00
|
|
|
|
2006-05-15 20:58:19 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:17 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2006-05-15 20:58:17 +09:00
|
|
|
|
|
|
|
|
|
2007-05-04 21:27:47 +02:00
|
|
|
|
2006-05-15 20:58:17 +09:00
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
2006-05-31 18:27:29 +09:00
|
|
|
|
2006-07-10 23:18:46 +09:00
|
|
|
|
2006-07-03 16:07:26 +09:00
|
|
|
|
|
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
2006-05-31 18:27:29 +09:00
|
|
|
|
2007-04-23 02:41:05 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
2007-04-23 02:41:05 +09:00
|
|
|
|
2006-07-10 23:18:46 +09:00
|
|
|
|
|
|
|
|
|
2007-08-18 13:28:49 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:12 +09:00
|
|
|
|
2006-04-02 17:54:46 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:22 +09:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:48 +09:00
|
|
|
|
2006-09-12 16:55:12 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-10-27 19:08:46 -07:00
|
|
|
|
|
|
|
|
|
2007-04-02 11:34:15 +08:00
|
|
|
|
2007-08-29 11:58:33 +09:00
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2007-09-29 04:06:48 -04:00
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
2007-11-05 22:58:58 +00:00
|
|
|
|
2007-11-15 10:35:46 +09:00
|
|
|
|
2007-10-02 12:38:26 -04:00
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
2007-10-02 12:38:26 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:06 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-11-27 19:43:42 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-09-27 17:36:35 +08:00
|
|
|
|
2005-09-30 19:07:39 +08:00
|
|
|
|
2007-04-02 11:28:52 +08:00
|
|
|
|
|
|
|
|
|
2005-09-30 19:07:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-30 04:44:42 -05:00
|
|
|
|
2006-01-23 13:09:36 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-11-10 18:08:10 +09:00
|
|
|
|
2007-07-16 14:29:40 +09:00
|
|
|
|
2005-10-30 04:44:42 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-23 13:09:36 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
libata: add deadline support to prereset and reset methods
Add @deadline to prereset and reset methods and make them honor it.
ata_wait_ready() which directly takes @deadline is implemented to be
used as the wait function. This patch is in preparation for EH timing
improvements.
* ata_wait_ready() never does busy sleep. It's only used from EH and
no wait in EH is that urgent. This function also prints 'be
patient' message automatically after 5 secs of waiting if more than
3 secs is remaining till deadline.
* ata_bus_post_reset() now fails with error code if any of its wait
fails. This is important because earlier reset tries will have
shorter timeout than the spec requires. If a device fails to
respond before the short timeout, reset should be retried with
longer timeout rather than silently ignoring the device.
There are three behavior differences.
1. Timeout is applied to both devices at once, not separately. This
is more consistent with what the spec says.
2. When a device passes devchk but fails to become ready before
deadline. Previouly, post_reset would just succeed and let
device classification remove the device. New code fails the
reset thus causing reset retry. After a few times, EH will give
up disabling the port.
3. When slave device passes devchk but fails to become accessible
(TF-wise) after reset. Original code disables dev1 after 30s
timeout and continues as if the device doesn't exist, while the
patched code fails reset. When this happens, new code fails
reset on whole port rather than proceeding with only the primary
device.
If the failing device is suffering transient problems, new code
retries reset which is a better behavior. If the failing device is
actually broken, the net effect is identical to it, but not to the
other device sharing the channel. In the previous code, reset would
have succeeded after 30s thus detecting the working one. In the new
code, reset fails and whole port gets disabled. IMO, it's a
pathological case anyway (broken device sharing bus with working
one) and doesn't really matter.
* ata_bus_softreset() is changed to return error code from
ata_bus_post_reset(). It used to return 0 unconditionally.
* Spin up waiting is to be removed and not converted to honor
deadline.
* To be on the safe side, deadline is set to 40s for the time being.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-02 16:50:52 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-02-01 15:06:36 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-02-01 15:06:36 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2006-03-27 18:58:20 +01:00
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-01 17:36:46 +00:00
|
|
|
|
2006-06-12 23:05:38 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-16 10:22:26 -04:00
|
|
|
|
2005-10-05 07:13:30 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-16 11:14:12 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:11 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2005-12-05 15:38:02 +08:00
|
|
|
|
2006-05-15 20:57:40 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-30 01:18:41 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:19 +09:00
|
|
|
|
2007-11-27 19:28:56 +09:00
|
|
|
|
2006-05-15 20:58:19 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
2006-05-31 18:27:32 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-07-05 13:31:27 +09:00
|
|
|
|
2006-05-31 18:27:40 +09:00
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
|
|
|
|
|
2007-12-15 15:05:03 +09:00
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
2006-05-31 18:27:32 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-12 15:06:27 +08:00
|
|
|
|
|
|
|
|
|
2006-02-12 23:32:59 +09:00
|
|
|
|
2006-02-12 23:32:58 +09:00
|
|
|
|
2005-05-12 15:29:42 -04:00
|
|
|
|
2006-03-24 14:07:50 +09:00
|
|
|
|
2007-11-27 19:43:42 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-03-24 14:07:50 +09:00
|
|
|
|
2005-05-12 15:29:42 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:19 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libata: put some intelligence into EH speed down sequence
The current EH speed down code is more of a proof that the EH
framework is capable of adjusting transfer speed in response to error.
This patch puts some intelligence into EH speed down sequence. The
rules are..
* If there have been more than three timeout, HSM violation or
unclassified DEV errors for known supported commands during last 10
mins, NCQ is turned off.
* If there have been more than three timeout or HSM violation for known
supported command, transfer mode is slowed down. If DMA is active,
it is first slowered by one grade (e.g. UDMA133->100). If that
doesn't help, it's slowered to 40c limit (UDMA33). If PIO is
active, it's slowered by one grade first. If that doesn't help,
PIO0 is forced. Note that this rule does not change transfer mode.
DMA is never degraded into PIO by this rule.
* If there have been more than ten ATA bus, timeout, HSM violation or
unclassified device errors for known supported commands && speeding
down DMA mode didn't help, the device is forced into PIO mode. Note
that this rule is considered only for PATA devices and is pretty
difficult to trigger.
One error can only trigger one rule at a time. After a rule is
triggered, error history is cleared such that the next speed down
happens only after some number of errors are accumulated. This makes
sense because now speed down is done in bigger stride.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-02 16:22:31 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:32 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-19 18:27:23 +09:00
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
2006-05-31 18:27:29 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:29 +09:00
|
|
|
|
|
|
|
|
|
2007-11-27 19:28:58 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
|
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2006-06-22 23:46:10 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-06-29 01:29:30 +09:00
|
|
|
|
2007-02-21 01:06:51 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 21:03:41 +09:00
|
|
|
|
2006-05-15 21:03:43 +09:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2006-05-15 21:03:43 +09:00
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
|
|
|
|
|
2006-03-23 17:30:15 -06:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-11-22 14:55:48 +00:00
|
|
|
|
2006-11-22 14:54:01 +00:00
|
|
|
|
|
|
|
|
|
2006-06-12 00:22:04 -04:00
|
|
|
|
2006-03-05 15:29:09 +09:00
|
|
|
|
2005-09-27 17:36:35 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-17 19:34:42 -05:00
|
|
|
|
2006-01-23 13:09:37 +09:00
|
|
|
|
2006-05-31 18:27:27 +09:00
|
|
|
|
2007-08-18 13:28:49 +09:00
|
|
|
|
2006-01-17 19:34:42 -05:00
|
|
|
|
2006-07-03 16:07:27 +09:00
|
|
|
|
|
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
2006-07-03 16:07:27 +09:00
|
|
|
|
2007-07-16 14:29:41 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-05-15 20:57:35 +09:00
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
|
|
|
|
|
2007-12-15 15:05:02 +09:00
|
|
|
|
2007-05-15 03:28:16 +09:00
|
|
|
|
2006-05-15 20:57:35 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-02 00:56:15 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-09 09:34:07 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-24 17:05:22 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-01-24 17:05:22 +09:00
|
|
|
|
2007-03-06 02:37:56 -08:00
|
|
|
|
|
|
|
|
|
2007-01-24 11:47:07 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:07 +09:00
|
|
|
|
|
|
|
|
|
2006-05-22 16:59:59 +01:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-23 13:09:36 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:57:58 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
of passing regs around manually through all ~1800 interrupt handlers in the
Linux kernel.
The regs pointer is used in few places, but it potentially costs both stack
space and code to pass it around. On the FRV arch, removing the regs parameter
from all the genirq function results in a 20% speed up of the IRQ exit path
(ie: from leaving timer_interrupt() to leaving do_IRQ()).
Where appropriate, an arch may override the generic storage facility and do
something different with the variable. On FRV, for instance, the address is
maintained in GR28 at all times inside the kernel as part of general exception
handling.
Having looked over the code, it appears that the parameter may be handed down
through up to twenty or so layers of functions. Consider a USB character
device attached to a USB hub, attached to a USB controller that posts its
interrupts through a cascaded auxiliary interrupt controller. A character
device driver may want to pass regs to the sysrq handler through the input
layer which adds another few layers of parameter passing.
I've build this code with allyesconfig for x86_64 and i386. I've runtested the
main part of the code on FRV and i386, though I can't test most of the drivers.
I've also done partial conversion for powerpc and MIPS - these at least compile
with minimal configurations.
This will affect all archs. Mostly the changes should be relatively easy.
Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
struct pt_regs *old_regs = set_irq_regs(regs);
And put the old one back at the end:
set_irq_regs(old_regs);
Don't pass regs through to generic_handle_irq() or __do_IRQ().
In timer_interrupt(), this sort of change will be necessary:
- update_process_times(user_mode(regs));
- profile_tick(CPU_PROFILING, regs);
+ update_process_times(user_mode(get_irq_regs()));
+ profile_tick(CPU_PROFILING);
I'd like to move update_process_times()'s use of get_irq_regs() into itself,
except that i386, alone of the archs, uses something other than user_mode().
Some notes on the interrupt handling in the drivers:
(*) input_dev() is now gone entirely. The regs pointer is no longer stored in
the input_dev struct.
(*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
something different depending on whether it's been supplied with a regs
pointer or not.
(*) Various IRQ handler function pointers have been moved to type
irq_handler_t.
Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-10-05 14:55:46 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-01-26 16:27:32 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-07-16 14:29:40 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-07-03 16:07:27 +09:00
|
|
|
|
|
|
|
|
|
2007-10-25 00:58:59 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2005-08-26 16:03:19 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-31 18:31:40 +01:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
2005-11-08 14:09:44 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-21 19:01:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-07-03 16:07:26 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-08-10 16:59:12 +09:00
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
2006-08-10 16:59:12 +09:00
|
|
|
|
2006-07-03 16:07:26 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:46 +09:00
|
|
|
|
2006-08-10 16:59:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
libata: add deadline support to prereset and reset methods
Add @deadline to prereset and reset methods and make them honor it.
ata_wait_ready() which directly takes @deadline is implemented to be
used as the wait function. This patch is in preparation for EH timing
improvements.
* ata_wait_ready() never does busy sleep. It's only used from EH and
no wait in EH is that urgent. This function also prints 'be
patient' message automatically after 5 secs of waiting if more than
3 secs is remaining till deadline.
* ata_bus_post_reset() now fails with error code if any of its wait
fails. This is important because earlier reset tries will have
shorter timeout than the spec requires. If a device fails to
respond before the short timeout, reset should be retried with
longer timeout rather than silently ignoring the device.
There are three behavior differences.
1. Timeout is applied to both devices at once, not separately. This
is more consistent with what the spec says.
2. When a device passes devchk but fails to become ready before
deadline. Previouly, post_reset would just succeed and let
device classification remove the device. New code fails the
reset thus causing reset retry. After a few times, EH will give
up disabling the port.
3. When slave device passes devchk but fails to become accessible
(TF-wise) after reset. Original code disables dev1 after 30s
timeout and continues as if the device doesn't exist, while the
patched code fails reset. When this happens, new code fails
reset on whole port rather than proceeding with only the primary
device.
If the failing device is suffering transient problems, new code
retries reset which is a better behavior. If the failing device is
actually broken, the net effect is identical to it, but not to the
other device sharing the channel. In the previous code, reset would
have succeeded after 30s thus detecting the working one. In the new
code, reset fails and whole port gets disabled. IMO, it's a
pathological case anyway (broken device sharing bus with working
one) and doesn't really matter.
* ata_bus_softreset() is changed to return error code from
ata_bus_post_reset(). It used to return 0 unconditionally.
* Spin up waiting is to be removed and not converted to honor
deadline.
* To be on the safe side, deadline is set to 40s for the time being.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-02 16:50:52 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libata: add deadline support to prereset and reset methods
Add @deadline to prereset and reset methods and make them honor it.
ata_wait_ready() which directly takes @deadline is implemented to be
used as the wait function. This patch is in preparation for EH timing
improvements.
* ata_wait_ready() never does busy sleep. It's only used from EH and
no wait in EH is that urgent. This function also prints 'be
patient' message automatically after 5 secs of waiting if more than
3 secs is remaining till deadline.
* ata_bus_post_reset() now fails with error code if any of its wait
fails. This is important because earlier reset tries will have
shorter timeout than the spec requires. If a device fails to
respond before the short timeout, reset should be retried with
longer timeout rather than silently ignoring the device.
There are three behavior differences.
1. Timeout is applied to both devices at once, not separately. This
is more consistent with what the spec says.
2. When a device passes devchk but fails to become ready before
deadline. Previouly, post_reset would just succeed and let
device classification remove the device. New code fails the
reset thus causing reset retry. After a few times, EH will give
up disabling the port.
3. When slave device passes devchk but fails to become accessible
(TF-wise) after reset. Original code disables dev1 after 30s
timeout and continues as if the device doesn't exist, while the
patched code fails reset. When this happens, new code fails
reset on whole port rather than proceeding with only the primary
device.
If the failing device is suffering transient problems, new code
retries reset which is a better behavior. If the failing device is
actually broken, the net effect is identical to it, but not to the
other device sharing the channel. In the previous code, reset would
have succeeded after 30s thus detecting the working one. In the new
code, reset fails and whole port gets disabled. IMO, it's a
pathological case anyway (broken device sharing bus with working
one) and doesn't really matter.
* ata_bus_softreset() is changed to return error code from
ata_bus_post_reset(). It used to return 0 unconditionally.
* Spin up waiting is to be removed and not converted to honor
deadline.
* To be on the safe side, deadline is set to 40s for the time being.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-02 16:50:52 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-10-11 17:12:35 -04:00
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
|
|
|
|
|
2007-04-17 23:44:06 +09:00
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
|
|
|
|
|
2007-04-17 23:44:07 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-20 16:00:26 +09:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
|
|
|
|
|
2005-11-07 00:59:37 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-08-07 14:27:31 -05:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
2006-08-07 14:27:31 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-03-02 17:32:47 +09:00
|
|
|
|
2006-08-24 03:19:22 -04:00
|
|
|
|
|
|
|
|
|
2007-03-02 17:32:47 +09:00
|
|
|
|
2005-10-05 02:58:32 -04:00
|
|
|
|
2006-10-09 18:32:15 +09:00
|
|
|
|
|
|
|
|
|
2007-10-16 14:21:24 -07:00
|
|
|
|
libata: add deadline support to prereset and reset methods
Add @deadline to prereset and reset methods and make them honor it.
ata_wait_ready() which directly takes @deadline is implemented to be
used as the wait function. This patch is in preparation for EH timing
improvements.
* ata_wait_ready() never does busy sleep. It's only used from EH and
no wait in EH is that urgent. This function also prints 'be
patient' message automatically after 5 secs of waiting if more than
3 secs is remaining till deadline.
* ata_bus_post_reset() now fails with error code if any of its wait
fails. This is important because earlier reset tries will have
shorter timeout than the spec requires. If a device fails to
respond before the short timeout, reset should be retried with
longer timeout rather than silently ignoring the device.
There are three behavior differences.
1. Timeout is applied to both devices at once, not separately. This
is more consistent with what the spec says.
2. When a device passes devchk but fails to become ready before
deadline. Previouly, post_reset would just succeed and let
device classification remove the device. New code fails the
reset thus causing reset retry. After a few times, EH will give
up disabling the port.
3. When slave device passes devchk but fails to become accessible
(TF-wise) after reset. Original code disables dev1 after 30s
timeout and continues as if the device doesn't exist, while the
patched code fails reset. When this happens, new code fails
reset on whole port rather than proceeding with only the primary
device.
If the failing device is suffering transient problems, new code
retries reset which is a better behavior. If the failing device is
actually broken, the net effect is identical to it, but not to the
other device sharing the channel. In the previous code, reset would
have succeeded after 30s thus detecting the working one. In the new
code, reset fails and whole port gets disabled. IMO, it's a
pathological case anyway (broken device sharing bus with working
one) and doesn't really matter.
* ata_bus_softreset() is changed to return error code from
ata_bus_post_reset(). It used to return 0 unconditionally.
* Spin up waiting is to be removed and not converted to honor
deadline.
* To be on the safe side, deadline is set to 40s for the time being.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-02 16:50:52 +09:00
|
|
|
|
2006-04-11 22:22:29 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-02 23:23:57 +09:00
|
|
|
|
|
|
|
|
|
2005-10-05 02:58:32 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-07-16 14:29:38 +09:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2007-11-27 19:43:42 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:07 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
2007-07-06 19:13:52 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-17 17:04:03 -06:00
|
|
|
|
2006-01-23 13:09:36 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2007-02-20 18:01:59 +00:00
|
|
|
|
2006-02-13 10:02:46 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
|
|
|
|
|
2005-08-26 16:03:19 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:24 +09:00
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:48 +09:00
|
|
|
|
2006-05-15 20:58:24 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:52 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:05 +09:00
|
|
|
|
2006-05-15 21:03:43 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:57:53 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:28:07 +09:00
|
|
|
|
2006-05-15 21:03:48 +09:00
|
|
|
|
|
|
|
|
|
2006-05-15 20:57:53 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2007-01-26 16:27:32 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-03-06 02:37:56 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-11-27 19:43:48 +09:00
|
|
|
|
2007-03-06 02:37:56 -08:00
|
|
|
|
|
|
|
|
|
2005-10-21 19:01:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-09 17:18:14 +00:00
|
|
|
|
|
|
|
|
|
2007-11-27 19:43:39 +09:00
|
|
|
|
2005-10-21 19:01:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-18 16:33:05 +09:00
|
|
|
|
2005-10-21 19:01:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-16 02:33:36 -04:00
|
|
|
|
|
|
|
|
|
2007-12-15 15:05:02 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-15 15:04:57 +09:00
|
|
|
|
|
|
|
|
|
2007-12-18 16:33:03 +09:00
|
|
|
|
|
|
|
|
|
2007-12-18 16:33:06 +09:00
|
|
|
|
2007-08-16 02:33:36 -04:00
|
|
|
|
2007-12-15 15:05:02 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-18 16:33:03 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-18 16:33:06 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-16 02:33:36 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-10-11 17:12:35 -04:00
|
|
|
|
|
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
2007-10-11 17:12:35 -04:00
|
|
|
|
2007-10-19 06:42:56 -04:00
|
|
|
|
2007-10-11 17:12:35 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-04 18:02:07 +09:00
|
|
|
|
2007-05-04 12:43:58 +02:00
|
|
|
|
2007-07-04 18:02:07 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-18 18:36:28 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2007-11-27 19:43:42 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-09-23 13:19:54 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:19:54 +09:00
|
|
|
|
2007-09-23 13:19:54 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-04-02 18:51:53 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:07 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-05-15 20:58:07 +09:00
|
|
|
|
2006-05-15 20:58:09 +09:00
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2006-05-15 20:58:09 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:07 +09:00
|
|
|
|
2006-04-02 18:51:53 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-31 18:27:48 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:22 +09:00
|
|
|
|
2006-05-15 20:57:55 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-15 15:04:58 +09:00
|
|
|
|
2006-05-15 20:57:55 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
2007-12-15 15:04:58 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
2007-12-15 15:04:58 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
2006-05-15 20:57:55 +09:00
|
|
|
|
2007-12-15 15:04:58 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-30 14:24:15 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-16 14:29:39 +09:00
|
|
|
|
2006-05-15 20:58:21 +09:00
|
|
|
|
2007-07-16 14:29:40 +09:00
|
|
|
|
2006-05-31 18:28:03 +09:00
|
|
|
|
2007-07-16 14:29:40 +09:00
|
|
|
|
2006-05-31 18:28:03 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-07-03 16:07:26 +09:00
|
|
|
|
|
|
|
|
|
2007-07-16 14:29:40 +09:00
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:13 +09:00
|
|
|
|
2006-07-03 16:07:26 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-18 13:14:55 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:02 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-04-01 01:38:18 +09:00
|
|
|
|
2006-03-01 01:25:38 +09:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
2006-03-01 01:25:38 +09:00
|
|
|
|
|
|
|
|
|
2006-04-01 01:38:18 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
2006-04-01 01:38:18 +09:00
|
|
|
|
|
|
|
|
|
2006-04-02 17:54:46 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-04-01 01:38:18 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-04-02 17:54:46 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-23 13:14:12 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-02-15 13:41:32 -08:00
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:23 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-24 20:30:19 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-02-20 23:20:27 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-06-02 18:17:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-06-02 18:17:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-31 17:47:24 +00:00
|
|
|
|
|
|
|
|
|
2005-06-02 18:17:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-10-09 18:32:15 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-06-02 18:17:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-30 14:23:03 +09:00
|
|
|
|
2007-06-25 21:31:05 +09:00
|
|
|
|
2007-07-30 14:23:03 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:03 +09:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:58:03 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-05-15 20:57:53 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-08-06 18:36:22 +09:00
|
|
|
|
2006-05-15 20:57:53 +09:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-11-14 14:14:16 -05:00
|
|
|
|
|
|
|
|
|
2007-01-17 11:34:02 +09:00
|
|
|
|
2007-12-05 16:43:11 +09:00
|
|
|
|
2005-11-14 14:14:16 -05:00
|
|
|
|
2007-10-16 11:14:12 +02:00
|
|
|
|
|
|
|
|
|
2008-02-19 11:36:56 +01:00
|
|
|
|
2007-01-17 12:32:12 -06:00
|
|
|
|
2005-12-05 15:38:02 +08:00
|
|
|
|
2007-03-16 10:22:26 -04:00
|
|
|
|
2005-11-14 14:14:16 -05:00
|
|
|
|
2006-05-15 20:57:53 +09:00
|
|
|
|
2006-05-15 20:57:40 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-11-14 14:14:16 -05:00
|
|
|
|
|
|
|
|
|
2005-10-22 14:27:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-05 16:43:06 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-30 04:44:42 -05:00
|
|
|
|
|
|
|
|
|
2006-05-19 11:43:04 +08:00
|
|
|
|
2006-01-23 13:09:36 +09:00
|
|
|
|
2005-10-30 04:44:42 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-04-11 13:12:34 -04:00
|
|
|
|
|
|
|
|
|
2007-04-17 23:44:06 +09:00
|
|
|
|
2006-04-11 13:12:34 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|