xref: /openbmc/linux/drivers/ata/libata-eh.c (revision eb3fcf00)
1 /*
2  *  libata-eh.c - libata error handling
3  *
4  *  Maintained by:  Tejun Heo <tj@kernel.org>
5  *    		    Please ALWAYS copy linux-ide@vger.kernel.org
6  *		    on emails.
7  *
8  *  Copyright 2006 Tejun Heo <htejun@gmail.com>
9  *
10  *
11  *  This program is free software; you can redistribute it and/or
12  *  modify it under the terms of the GNU General Public License as
13  *  published by the Free Software Foundation; either version 2, or
14  *  (at your option) any later version.
15  *
16  *  This program is distributed in the hope that it will be useful,
17  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  *  General Public License for more details.
20  *
21  *  You should have received a copy of the GNU General Public License
22  *  along with this program; see the file COPYING.  If not, write to
23  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
24  *  USA.
25  *
26  *
27  *  libata documentation is available via 'make {ps|pdf}docs',
28  *  as Documentation/DocBook/libata.*
29  *
30  *  Hardware documentation available from http://www.t13.org/ and
31  *  http://www.sata-io.org/
32  *
33  */
34 
35 #include <linux/kernel.h>
36 #include <linux/blkdev.h>
37 #include <linux/export.h>
38 #include <linux/pci.h>
39 #include <scsi/scsi.h>
40 #include <scsi/scsi_host.h>
41 #include <scsi/scsi_eh.h>
42 #include <scsi/scsi_device.h>
43 #include <scsi/scsi_cmnd.h>
44 #include <scsi/scsi_dbg.h>
45 #include "../scsi/scsi_transport_api.h"
46 
47 #include <linux/libata.h>
48 
49 #include <trace/events/libata.h>
50 #include "libata.h"
51 
52 enum {
53 	/* speed down verdicts */
54 	ATA_EH_SPDN_NCQ_OFF		= (1 << 0),
55 	ATA_EH_SPDN_SPEED_DOWN		= (1 << 1),
56 	ATA_EH_SPDN_FALLBACK_TO_PIO	= (1 << 2),
57 	ATA_EH_SPDN_KEEP_ERRORS		= (1 << 3),
58 
59 	/* error flags */
60 	ATA_EFLAG_IS_IO			= (1 << 0),
61 	ATA_EFLAG_DUBIOUS_XFER		= (1 << 1),
62 	ATA_EFLAG_OLD_ER                = (1 << 31),
63 
64 	/* error categories */
65 	ATA_ECAT_NONE			= 0,
66 	ATA_ECAT_ATA_BUS		= 1,
67 	ATA_ECAT_TOUT_HSM		= 2,
68 	ATA_ECAT_UNK_DEV		= 3,
69 	ATA_ECAT_DUBIOUS_NONE		= 4,
70 	ATA_ECAT_DUBIOUS_ATA_BUS	= 5,
71 	ATA_ECAT_DUBIOUS_TOUT_HSM	= 6,
72 	ATA_ECAT_DUBIOUS_UNK_DEV	= 7,
73 	ATA_ECAT_NR			= 8,
74 
75 	ATA_EH_CMD_DFL_TIMEOUT		=  5000,
76 
77 	/* always put at least this amount of time between resets */
78 	ATA_EH_RESET_COOL_DOWN		=  5000,
79 
80 	/* Waiting in ->prereset can never be reliable.  It's
81 	 * sometimes nice to wait there but it can't be depended upon;
82 	 * otherwise, we wouldn't be resetting.  Just give it enough
83 	 * time for most drives to spin up.
84 	 */
85 	ATA_EH_PRERESET_TIMEOUT		= 10000,
86 	ATA_EH_FASTDRAIN_INTERVAL	=  3000,
87 
88 	ATA_EH_UA_TRIES			= 5,
89 
90 	/* probe speed down parameters, see ata_eh_schedule_probe() */
91 	ATA_EH_PROBE_TRIAL_INTERVAL	= 60000,	/* 1 min */
92 	ATA_EH_PROBE_TRIALS		= 2,
93 };
94 
95 /* The following table determines how we sequence resets.  Each entry
96  * represents timeout for that try.  The first try can be soft or
97  * hardreset.  All others are hardreset if available.  In most cases
98  * the first reset w/ 10sec timeout should succeed.  Following entries
99  * are mostly for error handling, hotplug and those outlier devices that
100  * take an exceptionally long time to recover from reset.
101  */
102 static const unsigned long ata_eh_reset_timeouts[] = {
103 	10000,	/* most drives spin up by 10sec */
104 	10000,	/* > 99% working drives spin up before 20sec */
105 	35000,	/* give > 30 secs of idleness for outlier devices */
106 	 5000,	/* and sweet one last chance */
107 	ULONG_MAX, /* > 1 min has elapsed, give up */
108 };
109 
110 static const unsigned long ata_eh_identify_timeouts[] = {
111 	 5000,	/* covers > 99% of successes and not too boring on failures */
112 	10000,  /* combined time till here is enough even for media access */
113 	30000,	/* for true idiots */
114 	ULONG_MAX,
115 };
116 
117 static const unsigned long ata_eh_flush_timeouts[] = {
118 	15000,	/* be generous with flush */
119 	15000,  /* ditto */
120 	30000,	/* and even more generous */
121 	ULONG_MAX,
122 };
123 
124 static const unsigned long ata_eh_other_timeouts[] = {
125 	 5000,	/* same rationale as identify timeout */
126 	10000,	/* ditto */
127 	/* but no merciful 30sec for other commands, it just isn't worth it */
128 	ULONG_MAX,
129 };
130 
131 struct ata_eh_cmd_timeout_ent {
132 	const u8		*commands;
133 	const unsigned long	*timeouts;
134 };
135 
136 /* The following table determines timeouts to use for EH internal
137  * commands.  Each table entry is a command class and matches the
138  * commands the entry applies to and the timeout table to use.
139  *
140  * On the retry after a command timed out, the next timeout value from
141  * the table is used.  If the table doesn't contain further entries,
142  * the last value is used.
143  *
144  * ehc->cmd_timeout_idx keeps track of which timeout to use per
145  * command class, so if SET_FEATURES times out on the first try, the
146  * next try will use the second timeout value only for that class.
147  */
148 #define CMDS(cmds...)	(const u8 []){ cmds, 0 }
149 static const struct ata_eh_cmd_timeout_ent
150 ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = {
151 	{ .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI),
152 	  .timeouts = ata_eh_identify_timeouts, },
153 	{ .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT),
154 	  .timeouts = ata_eh_other_timeouts, },
155 	{ .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
156 	  .timeouts = ata_eh_other_timeouts, },
157 	{ .commands = CMDS(ATA_CMD_SET_FEATURES),
158 	  .timeouts = ata_eh_other_timeouts, },
159 	{ .commands = CMDS(ATA_CMD_INIT_DEV_PARAMS),
160 	  .timeouts = ata_eh_other_timeouts, },
161 	{ .commands = CMDS(ATA_CMD_FLUSH, ATA_CMD_FLUSH_EXT),
162 	  .timeouts = ata_eh_flush_timeouts },
163 };
164 #undef CMDS
165 
166 static void __ata_port_freeze(struct ata_port *ap);
167 #ifdef CONFIG_PM
168 static void ata_eh_handle_port_suspend(struct ata_port *ap);
169 static void ata_eh_handle_port_resume(struct ata_port *ap);
170 #else /* CONFIG_PM */
171 static void ata_eh_handle_port_suspend(struct ata_port *ap)
172 { }
173 
174 static void ata_eh_handle_port_resume(struct ata_port *ap)
175 { }
176 #endif /* CONFIG_PM */
177 
178 static void __ata_ehi_pushv_desc(struct ata_eh_info *ehi, const char *fmt,
179 				 va_list args)
180 {
181 	ehi->desc_len += vscnprintf(ehi->desc + ehi->desc_len,
182 				     ATA_EH_DESC_LEN - ehi->desc_len,
183 				     fmt, args);
184 }
185 
186 /**
187  *	__ata_ehi_push_desc - push error description without adding separator
188  *	@ehi: target EHI
189  *	@fmt: printf format string
190  *
191  *	Format string according to @fmt and append it to @ehi->desc.
192  *
193  *	LOCKING:
194  *	spin_lock_irqsave(host lock)
195  */
196 void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)
197 {
198 	va_list args;
199 
200 	va_start(args, fmt);
201 	__ata_ehi_pushv_desc(ehi, fmt, args);
202 	va_end(args);
203 }
204 
205 /**
206  *	ata_ehi_push_desc - push error description with separator
207  *	@ehi: target EHI
208  *	@fmt: printf format string
209  *
210  *	Format string according to @fmt and append it to @ehi->desc.
211  *	If @ehi->desc is not empty, ", " is added in-between.
212  *
213  *	LOCKING:
214  *	spin_lock_irqsave(host lock)
215  */
216 void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)
217 {
218 	va_list args;
219 
220 	if (ehi->desc_len)
221 		__ata_ehi_push_desc(ehi, ", ");
222 
223 	va_start(args, fmt);
224 	__ata_ehi_pushv_desc(ehi, fmt, args);
225 	va_end(args);
226 }
227 
228 /**
229  *	ata_ehi_clear_desc - clean error description
230  *	@ehi: target EHI
231  *
232  *	Clear @ehi->desc.
233  *
234  *	LOCKING:
235  *	spin_lock_irqsave(host lock)
236  */
237 void ata_ehi_clear_desc(struct ata_eh_info *ehi)
238 {
239 	ehi->desc[0] = '\0';
240 	ehi->desc_len = 0;
241 }
242 
243 /**
244  *	ata_port_desc - append port description
245  *	@ap: target ATA port
246  *	@fmt: printf format string
247  *
248  *	Format string according to @fmt and append it to port
249  *	description.  If port description is not empty, " " is added
250  *	in-between.  This function is to be used while initializing
251  *	ata_host.  The description is printed on host registration.
252  *
253  *	LOCKING:
254  *	None.
255  */
256 void ata_port_desc(struct ata_port *ap, const char *fmt, ...)
257 {
258 	va_list args;
259 
260 	WARN_ON(!(ap->pflags & ATA_PFLAG_INITIALIZING));
261 
262 	if (ap->link.eh_info.desc_len)
263 		__ata_ehi_push_desc(&ap->link.eh_info, " ");
264 
265 	va_start(args, fmt);
266 	__ata_ehi_pushv_desc(&ap->link.eh_info, fmt, args);
267 	va_end(args);
268 }
269 
270 #ifdef CONFIG_PCI
271 
272 /**
273  *	ata_port_pbar_desc - append PCI BAR description
274  *	@ap: target ATA port
275  *	@bar: target PCI BAR
276  *	@offset: offset into PCI BAR
277  *	@name: name of the area
278  *
279  *	If @offset is negative, this function formats a string which
280  *	contains the name, address, size and type of the BAR and
281  *	appends it to the port description.  If @offset is zero or
282  *	positive, only name and offsetted address is appended.
283  *
284  *	LOCKING:
285  *	None.
286  */
287 void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset,
288 			const char *name)
289 {
290 	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
291 	char *type = "";
292 	unsigned long long start, len;
293 
294 	if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM)
295 		type = "m";
296 	else if (pci_resource_flags(pdev, bar) & IORESOURCE_IO)
297 		type = "i";
298 
299 	start = (unsigned long long)pci_resource_start(pdev, bar);
300 	len = (unsigned long long)pci_resource_len(pdev, bar);
301 
302 	if (offset < 0)
303 		ata_port_desc(ap, "%s %s%llu@0x%llx", name, type, len, start);
304 	else
305 		ata_port_desc(ap, "%s 0x%llx", name,
306 				start + (unsigned long long)offset);
307 }
308 
309 #endif /* CONFIG_PCI */
310 
311 static int ata_lookup_timeout_table(u8 cmd)
312 {
313 	int i;
314 
315 	for (i = 0; i < ATA_EH_CMD_TIMEOUT_TABLE_SIZE; i++) {
316 		const u8 *cur;
317 
318 		for (cur = ata_eh_cmd_timeout_table[i].commands; *cur; cur++)
319 			if (*cur == cmd)
320 				return i;
321 	}
322 
323 	return -1;
324 }
325 
326 /**
327  *	ata_internal_cmd_timeout - determine timeout for an internal command
328  *	@dev: target device
329  *	@cmd: internal command to be issued
330  *
331  *	Determine timeout for internal command @cmd for @dev.
332  *
333  *	LOCKING:
334  *	EH context.
335  *
336  *	RETURNS:
337  *	Determined timeout.
338  */
339 unsigned long ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd)
340 {
341 	struct ata_eh_context *ehc = &dev->link->eh_context;
342 	int ent = ata_lookup_timeout_table(cmd);
343 	int idx;
344 
345 	if (ent < 0)
346 		return ATA_EH_CMD_DFL_TIMEOUT;
347 
348 	idx = ehc->cmd_timeout_idx[dev->devno][ent];
349 	return ata_eh_cmd_timeout_table[ent].timeouts[idx];
350 }
351 
352 /**
353  *	ata_internal_cmd_timed_out - notification for internal command timeout
354  *	@dev: target device
355  *	@cmd: internal command which timed out
356  *
357  *	Notify EH that internal command @cmd for @dev timed out.  This
358  *	function should be called only for commands whose timeouts are
359  *	determined using ata_internal_cmd_timeout().
360  *
361  *	LOCKING:
362  *	EH context.
363  */
364 void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd)
365 {
366 	struct ata_eh_context *ehc = &dev->link->eh_context;
367 	int ent = ata_lookup_timeout_table(cmd);
368 	int idx;
369 
370 	if (ent < 0)
371 		return;
372 
373 	idx = ehc->cmd_timeout_idx[dev->devno][ent];
374 	if (ata_eh_cmd_timeout_table[ent].timeouts[idx + 1] != ULONG_MAX)
375 		ehc->cmd_timeout_idx[dev->devno][ent]++;
376 }
377 
378 static void ata_ering_record(struct ata_ering *ering, unsigned int eflags,
379 			     unsigned int err_mask)
380 {
381 	struct ata_ering_entry *ent;
382 
383 	WARN_ON(!err_mask);
384 
385 	ering->cursor++;
386 	ering->cursor %= ATA_ERING_SIZE;
387 
388 	ent = &ering->ring[ering->cursor];
389 	ent->eflags = eflags;
390 	ent->err_mask = err_mask;
391 	ent->timestamp = get_jiffies_64();
392 }
393 
394 static struct ata_ering_entry *ata_ering_top(struct ata_ering *ering)
395 {
396 	struct ata_ering_entry *ent = &ering->ring[ering->cursor];
397 
398 	if (ent->err_mask)
399 		return ent;
400 	return NULL;
401 }
402 
403 int ata_ering_map(struct ata_ering *ering,
404 		  int (*map_fn)(struct ata_ering_entry *, void *),
405 		  void *arg)
406 {
407 	int idx, rc = 0;
408 	struct ata_ering_entry *ent;
409 
410 	idx = ering->cursor;
411 	do {
412 		ent = &ering->ring[idx];
413 		if (!ent->err_mask)
414 			break;
415 		rc = map_fn(ent, arg);
416 		if (rc)
417 			break;
418 		idx = (idx - 1 + ATA_ERING_SIZE) % ATA_ERING_SIZE;
419 	} while (idx != ering->cursor);
420 
421 	return rc;
422 }
423 
424 static int ata_ering_clear_cb(struct ata_ering_entry *ent, void *void_arg)
425 {
426 	ent->eflags |= ATA_EFLAG_OLD_ER;
427 	return 0;
428 }
429 
430 static void ata_ering_clear(struct ata_ering *ering)
431 {
432 	ata_ering_map(ering, ata_ering_clear_cb, NULL);
433 }
434 
435 static unsigned int ata_eh_dev_action(struct ata_device *dev)
436 {
437 	struct ata_eh_context *ehc = &dev->link->eh_context;
438 
439 	return ehc->i.action | ehc->i.dev_action[dev->devno];
440 }
441 
442 static void ata_eh_clear_action(struct ata_link *link, struct ata_device *dev,
443 				struct ata_eh_info *ehi, unsigned int action)
444 {
445 	struct ata_device *tdev;
446 
447 	if (!dev) {
448 		ehi->action &= ~action;
449 		ata_for_each_dev(tdev, link, ALL)
450 			ehi->dev_action[tdev->devno] &= ~action;
451 	} else {
452 		/* doesn't make sense for port-wide EH actions */
453 		WARN_ON(!(action & ATA_EH_PERDEV_MASK));
454 
455 		/* break ehi->action into ehi->dev_action */
456 		if (ehi->action & action) {
457 			ata_for_each_dev(tdev, link, ALL)
458 				ehi->dev_action[tdev->devno] |=
459 					ehi->action & action;
460 			ehi->action &= ~action;
461 		}
462 
463 		/* turn off the specified per-dev action */
464 		ehi->dev_action[dev->devno] &= ~action;
465 	}
466 }
467 
468 /**
469  *	ata_eh_acquire - acquire EH ownership
470  *	@ap: ATA port to acquire EH ownership for
471  *
472  *	Acquire EH ownership for @ap.  This is the basic exclusion
473  *	mechanism for ports sharing a host.  Only one port hanging off
474  *	the same host can claim the ownership of EH.
475  *
476  *	LOCKING:
477  *	EH context.
478  */
479 void ata_eh_acquire(struct ata_port *ap)
480 {
481 	mutex_lock(&ap->host->eh_mutex);
482 	WARN_ON_ONCE(ap->host->eh_owner);
483 	ap->host->eh_owner = current;
484 }
485 
486 /**
487  *	ata_eh_release - release EH ownership
488  *	@ap: ATA port to release EH ownership for
489  *
490  *	Release EH ownership for @ap if the caller.  The caller must
491  *	have acquired EH ownership using ata_eh_acquire() previously.
492  *
493  *	LOCKING:
494  *	EH context.
495  */
496 void ata_eh_release(struct ata_port *ap)
497 {
498 	WARN_ON_ONCE(ap->host->eh_owner != current);
499 	ap->host->eh_owner = NULL;
500 	mutex_unlock(&ap->host->eh_mutex);
501 }
502 
503 /**
504  *	ata_scsi_timed_out - SCSI layer time out callback
505  *	@cmd: timed out SCSI command
506  *
507  *	Handles SCSI layer timeout.  We race with normal completion of
508  *	the qc for @cmd.  If the qc is already gone, we lose and let
509  *	the scsi command finish (EH_HANDLED).  Otherwise, the qc has
510  *	timed out and EH should be invoked.  Prevent ata_qc_complete()
511  *	from finishing it by setting EH_SCHEDULED and return
512  *	EH_NOT_HANDLED.
513  *
514  *	TODO: kill this function once old EH is gone.
515  *
516  *	LOCKING:
517  *	Called from timer context
518  *
519  *	RETURNS:
520  *	EH_HANDLED or EH_NOT_HANDLED
521  */
522 enum blk_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd)
523 {
524 	struct Scsi_Host *host = cmd->device->host;
525 	struct ata_port *ap = ata_shost_to_port(host);
526 	unsigned long flags;
527 	struct ata_queued_cmd *qc;
528 	enum blk_eh_timer_return ret;
529 
530 	DPRINTK("ENTER\n");
531 
532 	if (ap->ops->error_handler) {
533 		ret = BLK_EH_NOT_HANDLED;
534 		goto out;
535 	}
536 
537 	ret = BLK_EH_HANDLED;
538 	spin_lock_irqsave(ap->lock, flags);
539 	qc = ata_qc_from_tag(ap, ap->link.active_tag);
540 	if (qc) {
541 		WARN_ON(qc->scsicmd != cmd);
542 		qc->flags |= ATA_QCFLAG_EH_SCHEDULED;
543 		qc->err_mask |= AC_ERR_TIMEOUT;
544 		ret = BLK_EH_NOT_HANDLED;
545 	}
546 	spin_unlock_irqrestore(ap->lock, flags);
547 
548  out:
549 	DPRINTK("EXIT, ret=%d\n", ret);
550 	return ret;
551 }
552 
553 static void ata_eh_unload(struct ata_port *ap)
554 {
555 	struct ata_link *link;
556 	struct ata_device *dev;
557 	unsigned long flags;
558 
559 	/* Restore SControl IPM and SPD for the next driver and
560 	 * disable attached devices.
561 	 */
562 	ata_for_each_link(link, ap, PMP_FIRST) {
563 		sata_scr_write(link, SCR_CONTROL, link->saved_scontrol & 0xff0);
564 		ata_for_each_dev(dev, link, ALL)
565 			ata_dev_disable(dev);
566 	}
567 
568 	/* freeze and set UNLOADED */
569 	spin_lock_irqsave(ap->lock, flags);
570 
571 	ata_port_freeze(ap);			/* won't be thawed */
572 	ap->pflags &= ~ATA_PFLAG_EH_PENDING;	/* clear pending from freeze */
573 	ap->pflags |= ATA_PFLAG_UNLOADED;
574 
575 	spin_unlock_irqrestore(ap->lock, flags);
576 }
577 
578 /**
579  *	ata_scsi_error - SCSI layer error handler callback
580  *	@host: SCSI host on which error occurred
581  *
582  *	Handles SCSI-layer-thrown error events.
583  *
584  *	LOCKING:
585  *	Inherited from SCSI layer (none, can sleep)
586  *
587  *	RETURNS:
588  *	Zero.
589  */
590 void ata_scsi_error(struct Scsi_Host *host)
591 {
592 	struct ata_port *ap = ata_shost_to_port(host);
593 	unsigned long flags;
594 	LIST_HEAD(eh_work_q);
595 
596 	DPRINTK("ENTER\n");
597 
598 	spin_lock_irqsave(host->host_lock, flags);
599 	list_splice_init(&host->eh_cmd_q, &eh_work_q);
600 	spin_unlock_irqrestore(host->host_lock, flags);
601 
602 	ata_scsi_cmd_error_handler(host, ap, &eh_work_q);
603 
604 	/* If we timed raced normal completion and there is nothing to
605 	   recover nr_timedout == 0 why exactly are we doing error recovery ? */
606 	ata_scsi_port_error_handler(host, ap);
607 
608 	/* finish or retry handled scmd's and clean up */
609 	WARN_ON(host->host_failed || !list_empty(&eh_work_q));
610 
611 	DPRINTK("EXIT\n");
612 }
613 
614 /**
615  * ata_scsi_cmd_error_handler - error callback for a list of commands
616  * @host:	scsi host containing the port
617  * @ap:		ATA port within the host
618  * @eh_work_q:	list of commands to process
619  *
620  * process the given list of commands and return those finished to the
621  * ap->eh_done_q.  This function is the first part of the libata error
622  * handler which processes a given list of failed commands.
623  */
624 void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
625 				struct list_head *eh_work_q)
626 {
627 	int i;
628 	unsigned long flags;
629 
630 	/* make sure sff pio task is not running */
631 	ata_sff_flush_pio_task(ap);
632 
633 	/* synchronize with host lock and sort out timeouts */
634 
635 	/* For new EH, all qcs are finished in one of three ways -
636 	 * normal completion, error completion, and SCSI timeout.
637 	 * Both completions can race against SCSI timeout.  When normal
638 	 * completion wins, the qc never reaches EH.  When error
639 	 * completion wins, the qc has ATA_QCFLAG_FAILED set.
640 	 *
641 	 * When SCSI timeout wins, things are a bit more complex.
642 	 * Normal or error completion can occur after the timeout but
643 	 * before this point.  In such cases, both types of
644 	 * completions are honored.  A scmd is determined to have
645 	 * timed out iff its associated qc is active and not failed.
646 	 */
647 	if (ap->ops->error_handler) {
648 		struct scsi_cmnd *scmd, *tmp;
649 		int nr_timedout = 0;
650 
651 		spin_lock_irqsave(ap->lock, flags);
652 
653 		/* This must occur under the ap->lock as we don't want
654 		   a polled recovery to race the real interrupt handler
655 
656 		   The lost_interrupt handler checks for any completed but
657 		   non-notified command and completes much like an IRQ handler.
658 
659 		   We then fall into the error recovery code which will treat
660 		   this as if normal completion won the race */
661 
662 		if (ap->ops->lost_interrupt)
663 			ap->ops->lost_interrupt(ap);
664 
665 		list_for_each_entry_safe(scmd, tmp, eh_work_q, eh_entry) {
666 			struct ata_queued_cmd *qc;
667 
668 			for (i = 0; i < ATA_MAX_QUEUE; i++) {
669 				qc = __ata_qc_from_tag(ap, i);
670 				if (qc->flags & ATA_QCFLAG_ACTIVE &&
671 				    qc->scsicmd == scmd)
672 					break;
673 			}
674 
675 			if (i < ATA_MAX_QUEUE) {
676 				/* the scmd has an associated qc */
677 				if (!(qc->flags & ATA_QCFLAG_FAILED)) {
678 					/* which hasn't failed yet, timeout */
679 					qc->err_mask |= AC_ERR_TIMEOUT;
680 					qc->flags |= ATA_QCFLAG_FAILED;
681 					nr_timedout++;
682 				}
683 			} else {
684 				/* Normal completion occurred after
685 				 * SCSI timeout but before this point.
686 				 * Successfully complete it.
687 				 */
688 				scmd->retries = scmd->allowed;
689 				scsi_eh_finish_cmd(scmd, &ap->eh_done_q);
690 			}
691 		}
692 
693 		/* If we have timed out qcs.  They belong to EH from
694 		 * this point but the state of the controller is
695 		 * unknown.  Freeze the port to make sure the IRQ
696 		 * handler doesn't diddle with those qcs.  This must
697 		 * be done atomically w.r.t. setting QCFLAG_FAILED.
698 		 */
699 		if (nr_timedout)
700 			__ata_port_freeze(ap);
701 
702 		spin_unlock_irqrestore(ap->lock, flags);
703 
704 		/* initialize eh_tries */
705 		ap->eh_tries = ATA_EH_MAX_TRIES;
706 	} else
707 		spin_unlock_wait(ap->lock);
708 
709 }
710 EXPORT_SYMBOL(ata_scsi_cmd_error_handler);
711 
712 /**
713  * ata_scsi_port_error_handler - recover the port after the commands
714  * @host:	SCSI host containing the port
715  * @ap:		the ATA port
716  *
717  * Handle the recovery of the port @ap after all the commands
718  * have been recovered.
719  */
720 void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap)
721 {
722 	unsigned long flags;
723 
724 	/* invoke error handler */
725 	if (ap->ops->error_handler) {
726 		struct ata_link *link;
727 
728 		/* acquire EH ownership */
729 		ata_eh_acquire(ap);
730  repeat:
731 		/* kill fast drain timer */
732 		del_timer_sync(&ap->fastdrain_timer);
733 
734 		/* process port resume request */
735 		ata_eh_handle_port_resume(ap);
736 
737 		/* fetch & clear EH info */
738 		spin_lock_irqsave(ap->lock, flags);
739 
740 		ata_for_each_link(link, ap, HOST_FIRST) {
741 			struct ata_eh_context *ehc = &link->eh_context;
742 			struct ata_device *dev;
743 
744 			memset(&link->eh_context, 0, sizeof(link->eh_context));
745 			link->eh_context.i = link->eh_info;
746 			memset(&link->eh_info, 0, sizeof(link->eh_info));
747 
748 			ata_for_each_dev(dev, link, ENABLED) {
749 				int devno = dev->devno;
750 
751 				ehc->saved_xfer_mode[devno] = dev->xfer_mode;
752 				if (ata_ncq_enabled(dev))
753 					ehc->saved_ncq_enabled |= 1 << devno;
754 			}
755 		}
756 
757 		ap->pflags |= ATA_PFLAG_EH_IN_PROGRESS;
758 		ap->pflags &= ~ATA_PFLAG_EH_PENDING;
759 		ap->excl_link = NULL;	/* don't maintain exclusion over EH */
760 
761 		spin_unlock_irqrestore(ap->lock, flags);
762 
763 		/* invoke EH, skip if unloading or suspended */
764 		if (!(ap->pflags & (ATA_PFLAG_UNLOADING | ATA_PFLAG_SUSPENDED)))
765 			ap->ops->error_handler(ap);
766 		else {
767 			/* if unloading, commence suicide */
768 			if ((ap->pflags & ATA_PFLAG_UNLOADING) &&
769 			    !(ap->pflags & ATA_PFLAG_UNLOADED))
770 				ata_eh_unload(ap);
771 			ata_eh_finish(ap);
772 		}
773 
774 		/* process port suspend request */
775 		ata_eh_handle_port_suspend(ap);
776 
777 		/* Exception might have happened after ->error_handler
778 		 * recovered the port but before this point.  Repeat
779 		 * EH in such case.
780 		 */
781 		spin_lock_irqsave(ap->lock, flags);
782 
783 		if (ap->pflags & ATA_PFLAG_EH_PENDING) {
784 			if (--ap->eh_tries) {
785 				spin_unlock_irqrestore(ap->lock, flags);
786 				goto repeat;
787 			}
788 			ata_port_err(ap,
789 				     "EH pending after %d tries, giving up\n",
790 				     ATA_EH_MAX_TRIES);
791 			ap->pflags &= ~ATA_PFLAG_EH_PENDING;
792 		}
793 
794 		/* this run is complete, make sure EH info is clear */
795 		ata_for_each_link(link, ap, HOST_FIRST)
796 			memset(&link->eh_info, 0, sizeof(link->eh_info));
797 
798 		/* end eh (clear host_eh_scheduled) while holding
799 		 * ap->lock such that if exception occurs after this
800 		 * point but before EH completion, SCSI midlayer will
801 		 * re-initiate EH.
802 		 */
803 		ap->ops->end_eh(ap);
804 
805 		spin_unlock_irqrestore(ap->lock, flags);
806 		ata_eh_release(ap);
807 	} else {
808 		WARN_ON(ata_qc_from_tag(ap, ap->link.active_tag) == NULL);
809 		ap->ops->eng_timeout(ap);
810 	}
811 
812 	scsi_eh_flush_done_q(&ap->eh_done_q);
813 
814 	/* clean up */
815 	spin_lock_irqsave(ap->lock, flags);
816 
817 	if (ap->pflags & ATA_PFLAG_LOADING)
818 		ap->pflags &= ~ATA_PFLAG_LOADING;
819 	else if (ap->pflags & ATA_PFLAG_SCSI_HOTPLUG)
820 		schedule_delayed_work(&ap->hotplug_task, 0);
821 
822 	if (ap->pflags & ATA_PFLAG_RECOVERED)
823 		ata_port_info(ap, "EH complete\n");
824 
825 	ap->pflags &= ~(ATA_PFLAG_SCSI_HOTPLUG | ATA_PFLAG_RECOVERED);
826 
827 	/* tell wait_eh that we're done */
828 	ap->pflags &= ~ATA_PFLAG_EH_IN_PROGRESS;
829 	wake_up_all(&ap->eh_wait_q);
830 
831 	spin_unlock_irqrestore(ap->lock, flags);
832 }
833 EXPORT_SYMBOL_GPL(ata_scsi_port_error_handler);
834 
835 /**
836  *	ata_port_wait_eh - Wait for the currently pending EH to complete
837  *	@ap: Port to wait EH for
838  *
839  *	Wait until the currently pending EH is complete.
840  *
841  *	LOCKING:
842  *	Kernel thread context (may sleep).
843  */
844 void ata_port_wait_eh(struct ata_port *ap)
845 {
846 	unsigned long flags;
847 	DEFINE_WAIT(wait);
848 
849  retry:
850 	spin_lock_irqsave(ap->lock, flags);
851 
852 	while (ap->pflags & (ATA_PFLAG_EH_PENDING | ATA_PFLAG_EH_IN_PROGRESS)) {
853 		prepare_to_wait(&ap->eh_wait_q, &wait, TASK_UNINTERRUPTIBLE);
854 		spin_unlock_irqrestore(ap->lock, flags);
855 		schedule();
856 		spin_lock_irqsave(ap->lock, flags);
857 	}
858 	finish_wait(&ap->eh_wait_q, &wait);
859 
860 	spin_unlock_irqrestore(ap->lock, flags);
861 
862 	/* make sure SCSI EH is complete */
863 	if (scsi_host_in_recovery(ap->scsi_host)) {
864 		ata_msleep(ap, 10);
865 		goto retry;
866 	}
867 }
868 EXPORT_SYMBOL_GPL(ata_port_wait_eh);
869 
870 static int ata_eh_nr_in_flight(struct ata_port *ap)
871 {
872 	unsigned int tag;
873 	int nr = 0;
874 
875 	/* count only non-internal commands */
876 	for (tag = 0; tag < ATA_MAX_QUEUE - 1; tag++)
877 		if (ata_qc_from_tag(ap, tag))
878 			nr++;
879 
880 	return nr;
881 }
882 
883 void ata_eh_fastdrain_timerfn(unsigned long arg)
884 {
885 	struct ata_port *ap = (void *)arg;
886 	unsigned long flags;
887 	int cnt;
888 
889 	spin_lock_irqsave(ap->lock, flags);
890 
891 	cnt = ata_eh_nr_in_flight(ap);
892 
893 	/* are we done? */
894 	if (!cnt)
895 		goto out_unlock;
896 
897 	if (cnt == ap->fastdrain_cnt) {
898 		unsigned int tag;
899 
900 		/* No progress during the last interval, tag all
901 		 * in-flight qcs as timed out and freeze the port.
902 		 */
903 		for (tag = 0; tag < ATA_MAX_QUEUE - 1; tag++) {
904 			struct ata_queued_cmd *qc = ata_qc_from_tag(ap, tag);
905 			if (qc)
906 				qc->err_mask |= AC_ERR_TIMEOUT;
907 		}
908 
909 		ata_port_freeze(ap);
910 	} else {
911 		/* some qcs have finished, give it another chance */
912 		ap->fastdrain_cnt = cnt;
913 		ap->fastdrain_timer.expires =
914 			ata_deadline(jiffies, ATA_EH_FASTDRAIN_INTERVAL);
915 		add_timer(&ap->fastdrain_timer);
916 	}
917 
918  out_unlock:
919 	spin_unlock_irqrestore(ap->lock, flags);
920 }
921 
922 /**
923  *	ata_eh_set_pending - set ATA_PFLAG_EH_PENDING and activate fast drain
924  *	@ap: target ATA port
925  *	@fastdrain: activate fast drain
926  *
927  *	Set ATA_PFLAG_EH_PENDING and activate fast drain if @fastdrain
928  *	is non-zero and EH wasn't pending before.  Fast drain ensures
929  *	that EH kicks in in timely manner.
930  *
931  *	LOCKING:
932  *	spin_lock_irqsave(host lock)
933  */
934 static void ata_eh_set_pending(struct ata_port *ap, int fastdrain)
935 {
936 	int cnt;
937 
938 	/* already scheduled? */
939 	if (ap->pflags & ATA_PFLAG_EH_PENDING)
940 		return;
941 
942 	ap->pflags |= ATA_PFLAG_EH_PENDING;
943 
944 	if (!fastdrain)
945 		return;
946 
947 	/* do we have in-flight qcs? */
948 	cnt = ata_eh_nr_in_flight(ap);
949 	if (!cnt)
950 		return;
951 
952 	/* activate fast drain */
953 	ap->fastdrain_cnt = cnt;
954 	ap->fastdrain_timer.expires =
955 		ata_deadline(jiffies, ATA_EH_FASTDRAIN_INTERVAL);
956 	add_timer(&ap->fastdrain_timer);
957 }
958 
959 /**
960  *	ata_qc_schedule_eh - schedule qc for error handling
961  *	@qc: command to schedule error handling for
962  *
963  *	Schedule error handling for @qc.  EH will kick in as soon as
964  *	other commands are drained.
965  *
966  *	LOCKING:
967  *	spin_lock_irqsave(host lock)
968  */
969 void ata_qc_schedule_eh(struct ata_queued_cmd *qc)
970 {
971 	struct ata_port *ap = qc->ap;
972 	struct request_queue *q = qc->scsicmd->device->request_queue;
973 	unsigned long flags;
974 
975 	WARN_ON(!ap->ops->error_handler);
976 
977 	qc->flags |= ATA_QCFLAG_FAILED;
978 	ata_eh_set_pending(ap, 1);
979 
980 	/* The following will fail if timeout has already expired.
981 	 * ata_scsi_error() takes care of such scmds on EH entry.
982 	 * Note that ATA_QCFLAG_FAILED is unconditionally set after
983 	 * this function completes.
984 	 */
985 	spin_lock_irqsave(q->queue_lock, flags);
986 	blk_abort_request(qc->scsicmd->request);
987 	spin_unlock_irqrestore(q->queue_lock, flags);
988 }
989 
990 /**
991  * ata_std_sched_eh - non-libsas ata_ports issue eh with this common routine
992  * @ap: ATA port to schedule EH for
993  *
994  *	LOCKING: inherited from ata_port_schedule_eh
995  *	spin_lock_irqsave(host lock)
996  */
997 void ata_std_sched_eh(struct ata_port *ap)
998 {
999 	WARN_ON(!ap->ops->error_handler);
1000 
1001 	if (ap->pflags & ATA_PFLAG_INITIALIZING)
1002 		return;
1003 
1004 	ata_eh_set_pending(ap, 1);
1005 	scsi_schedule_eh(ap->scsi_host);
1006 
1007 	DPRINTK("port EH scheduled\n");
1008 }
1009 EXPORT_SYMBOL_GPL(ata_std_sched_eh);
1010 
1011 /**
1012  * ata_std_end_eh - non-libsas ata_ports complete eh with this common routine
1013  * @ap: ATA port to end EH for
1014  *
1015  * In the libata object model there is a 1:1 mapping of ata_port to
1016  * shost, so host fields can be directly manipulated under ap->lock, in
1017  * the libsas case we need to hold a lock at the ha->level to coordinate
1018  * these events.
1019  *
1020  *	LOCKING:
1021  *	spin_lock_irqsave(host lock)
1022  */
1023 void ata_std_end_eh(struct ata_port *ap)
1024 {
1025 	struct Scsi_Host *host = ap->scsi_host;
1026 
1027 	host->host_eh_scheduled = 0;
1028 }
1029 EXPORT_SYMBOL(ata_std_end_eh);
1030 
1031 
1032 /**
1033  *	ata_port_schedule_eh - schedule error handling without a qc
1034  *	@ap: ATA port to schedule EH for
1035  *
1036  *	Schedule error handling for @ap.  EH will kick in as soon as
1037  *	all commands are drained.
1038  *
1039  *	LOCKING:
1040  *	spin_lock_irqsave(host lock)
1041  */
1042 void ata_port_schedule_eh(struct ata_port *ap)
1043 {
1044 	/* see: ata_std_sched_eh, unless you know better */
1045 	ap->ops->sched_eh(ap);
1046 }
1047 
1048 static int ata_do_link_abort(struct ata_port *ap, struct ata_link *link)
1049 {
1050 	int tag, nr_aborted = 0;
1051 
1052 	WARN_ON(!ap->ops->error_handler);
1053 
1054 	/* we're gonna abort all commands, no need for fast drain */
1055 	ata_eh_set_pending(ap, 0);
1056 
1057 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
1058 		struct ata_queued_cmd *qc = ata_qc_from_tag(ap, tag);
1059 
1060 		if (qc && (!link || qc->dev->link == link)) {
1061 			qc->flags |= ATA_QCFLAG_FAILED;
1062 			ata_qc_complete(qc);
1063 			nr_aborted++;
1064 		}
1065 	}
1066 
1067 	if (!nr_aborted)
1068 		ata_port_schedule_eh(ap);
1069 
1070 	return nr_aborted;
1071 }
1072 
1073 /**
1074  *	ata_link_abort - abort all qc's on the link
1075  *	@link: ATA link to abort qc's for
1076  *
1077  *	Abort all active qc's active on @link and schedule EH.
1078  *
1079  *	LOCKING:
1080  *	spin_lock_irqsave(host lock)
1081  *
1082  *	RETURNS:
1083  *	Number of aborted qc's.
1084  */
1085 int ata_link_abort(struct ata_link *link)
1086 {
1087 	return ata_do_link_abort(link->ap, link);
1088 }
1089 
1090 /**
1091  *	ata_port_abort - abort all qc's on the port
1092  *	@ap: ATA port to abort qc's for
1093  *
1094  *	Abort all active qc's of @ap and schedule EH.
1095  *
1096  *	LOCKING:
1097  *	spin_lock_irqsave(host_set lock)
1098  *
1099  *	RETURNS:
1100  *	Number of aborted qc's.
1101  */
1102 int ata_port_abort(struct ata_port *ap)
1103 {
1104 	return ata_do_link_abort(ap, NULL);
1105 }
1106 
1107 /**
1108  *	__ata_port_freeze - freeze port
1109  *	@ap: ATA port to freeze
1110  *
1111  *	This function is called when HSM violation or some other
1112  *	condition disrupts normal operation of the port.  Frozen port
1113  *	is not allowed to perform any operation until the port is
1114  *	thawed, which usually follows a successful reset.
1115  *
1116  *	ap->ops->freeze() callback can be used for freezing the port
1117  *	hardware-wise (e.g. mask interrupt and stop DMA engine).  If a
1118  *	port cannot be frozen hardware-wise, the interrupt handler
1119  *	must ack and clear interrupts unconditionally while the port
1120  *	is frozen.
1121  *
1122  *	LOCKING:
1123  *	spin_lock_irqsave(host lock)
1124  */
1125 static void __ata_port_freeze(struct ata_port *ap)
1126 {
1127 	WARN_ON(!ap->ops->error_handler);
1128 
1129 	if (ap->ops->freeze)
1130 		ap->ops->freeze(ap);
1131 
1132 	ap->pflags |= ATA_PFLAG_FROZEN;
1133 
1134 	DPRINTK("ata%u port frozen\n", ap->print_id);
1135 }
1136 
1137 /**
1138  *	ata_port_freeze - abort & freeze port
1139  *	@ap: ATA port to freeze
1140  *
1141  *	Abort and freeze @ap.  The freeze operation must be called
1142  *	first, because some hardware requires special operations
1143  *	before the taskfile registers are accessible.
1144  *
1145  *	LOCKING:
1146  *	spin_lock_irqsave(host lock)
1147  *
1148  *	RETURNS:
1149  *	Number of aborted commands.
1150  */
1151 int ata_port_freeze(struct ata_port *ap)
1152 {
1153 	int nr_aborted;
1154 
1155 	WARN_ON(!ap->ops->error_handler);
1156 
1157 	__ata_port_freeze(ap);
1158 	nr_aborted = ata_port_abort(ap);
1159 
1160 	return nr_aborted;
1161 }
1162 
1163 /**
1164  *	sata_async_notification - SATA async notification handler
1165  *	@ap: ATA port where async notification is received
1166  *
1167  *	Handler to be called when async notification via SDB FIS is
1168  *	received.  This function schedules EH if necessary.
1169  *
1170  *	LOCKING:
1171  *	spin_lock_irqsave(host lock)
1172  *
1173  *	RETURNS:
1174  *	1 if EH is scheduled, 0 otherwise.
1175  */
1176 int sata_async_notification(struct ata_port *ap)
1177 {
1178 	u32 sntf;
1179 	int rc;
1180 
1181 	if (!(ap->flags & ATA_FLAG_AN))
1182 		return 0;
1183 
1184 	rc = sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf);
1185 	if (rc == 0)
1186 		sata_scr_write(&ap->link, SCR_NOTIFICATION, sntf);
1187 
1188 	if (!sata_pmp_attached(ap) || rc) {
1189 		/* PMP is not attached or SNTF is not available */
1190 		if (!sata_pmp_attached(ap)) {
1191 			/* PMP is not attached.  Check whether ATAPI
1192 			 * AN is configured.  If so, notify media
1193 			 * change.
1194 			 */
1195 			struct ata_device *dev = ap->link.device;
1196 
1197 			if ((dev->class == ATA_DEV_ATAPI) &&
1198 			    (dev->flags & ATA_DFLAG_AN))
1199 				ata_scsi_media_change_notify(dev);
1200 			return 0;
1201 		} else {
1202 			/* PMP is attached but SNTF is not available.
1203 			 * ATAPI async media change notification is
1204 			 * not used.  The PMP must be reporting PHY
1205 			 * status change, schedule EH.
1206 			 */
1207 			ata_port_schedule_eh(ap);
1208 			return 1;
1209 		}
1210 	} else {
1211 		/* PMP is attached and SNTF is available */
1212 		struct ata_link *link;
1213 
1214 		/* check and notify ATAPI AN */
1215 		ata_for_each_link(link, ap, EDGE) {
1216 			if (!(sntf & (1 << link->pmp)))
1217 				continue;
1218 
1219 			if ((link->device->class == ATA_DEV_ATAPI) &&
1220 			    (link->device->flags & ATA_DFLAG_AN))
1221 				ata_scsi_media_change_notify(link->device);
1222 		}
1223 
1224 		/* If PMP is reporting that PHY status of some
1225 		 * downstream ports has changed, schedule EH.
1226 		 */
1227 		if (sntf & (1 << SATA_PMP_CTRL_PORT)) {
1228 			ata_port_schedule_eh(ap);
1229 			return 1;
1230 		}
1231 
1232 		return 0;
1233 	}
1234 }
1235 
1236 /**
1237  *	ata_eh_freeze_port - EH helper to freeze port
1238  *	@ap: ATA port to freeze
1239  *
1240  *	Freeze @ap.
1241  *
1242  *	LOCKING:
1243  *	None.
1244  */
1245 void ata_eh_freeze_port(struct ata_port *ap)
1246 {
1247 	unsigned long flags;
1248 
1249 	if (!ap->ops->error_handler)
1250 		return;
1251 
1252 	spin_lock_irqsave(ap->lock, flags);
1253 	__ata_port_freeze(ap);
1254 	spin_unlock_irqrestore(ap->lock, flags);
1255 }
1256 
1257 /**
1258  *	ata_port_thaw_port - EH helper to thaw port
1259  *	@ap: ATA port to thaw
1260  *
1261  *	Thaw frozen port @ap.
1262  *
1263  *	LOCKING:
1264  *	None.
1265  */
1266 void ata_eh_thaw_port(struct ata_port *ap)
1267 {
1268 	unsigned long flags;
1269 
1270 	if (!ap->ops->error_handler)
1271 		return;
1272 
1273 	spin_lock_irqsave(ap->lock, flags);
1274 
1275 	ap->pflags &= ~ATA_PFLAG_FROZEN;
1276 
1277 	if (ap->ops->thaw)
1278 		ap->ops->thaw(ap);
1279 
1280 	spin_unlock_irqrestore(ap->lock, flags);
1281 
1282 	DPRINTK("ata%u port thawed\n", ap->print_id);
1283 }
1284 
1285 static void ata_eh_scsidone(struct scsi_cmnd *scmd)
1286 {
1287 	/* nada */
1288 }
1289 
1290 static void __ata_eh_qc_complete(struct ata_queued_cmd *qc)
1291 {
1292 	struct ata_port *ap = qc->ap;
1293 	struct scsi_cmnd *scmd = qc->scsicmd;
1294 	unsigned long flags;
1295 
1296 	spin_lock_irqsave(ap->lock, flags);
1297 	qc->scsidone = ata_eh_scsidone;
1298 	__ata_qc_complete(qc);
1299 	WARN_ON(ata_tag_valid(qc->tag));
1300 	spin_unlock_irqrestore(ap->lock, flags);
1301 
1302 	scsi_eh_finish_cmd(scmd, &ap->eh_done_q);
1303 }
1304 
1305 /**
1306  *	ata_eh_qc_complete - Complete an active ATA command from EH
1307  *	@qc: Command to complete
1308  *
1309  *	Indicate to the mid and upper layers that an ATA command has
1310  *	completed.  To be used from EH.
1311  */
1312 void ata_eh_qc_complete(struct ata_queued_cmd *qc)
1313 {
1314 	struct scsi_cmnd *scmd = qc->scsicmd;
1315 	scmd->retries = scmd->allowed;
1316 	__ata_eh_qc_complete(qc);
1317 }
1318 
1319 /**
1320  *	ata_eh_qc_retry - Tell midlayer to retry an ATA command after EH
1321  *	@qc: Command to retry
1322  *
1323  *	Indicate to the mid and upper layers that an ATA command
1324  *	should be retried.  To be used from EH.
1325  *
1326  *	SCSI midlayer limits the number of retries to scmd->allowed.
1327  *	scmd->allowed is incremented for commands which get retried
1328  *	due to unrelated failures (qc->err_mask is zero).
1329  */
1330 void ata_eh_qc_retry(struct ata_queued_cmd *qc)
1331 {
1332 	struct scsi_cmnd *scmd = qc->scsicmd;
1333 	if (!qc->err_mask)
1334 		scmd->allowed++;
1335 	__ata_eh_qc_complete(qc);
1336 }
1337 
1338 /**
1339  *	ata_dev_disable - disable ATA device
1340  *	@dev: ATA device to disable
1341  *
1342  *	Disable @dev.
1343  *
1344  *	Locking:
1345  *	EH context.
1346  */
1347 void ata_dev_disable(struct ata_device *dev)
1348 {
1349 	if (!ata_dev_enabled(dev))
1350 		return;
1351 
1352 	if (ata_msg_drv(dev->link->ap))
1353 		ata_dev_warn(dev, "disabled\n");
1354 	ata_acpi_on_disable(dev);
1355 	ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO0 | ATA_DNXFER_QUIET);
1356 	dev->class++;
1357 
1358 	/* From now till the next successful probe, ering is used to
1359 	 * track probe failures.  Clear accumulated device error info.
1360 	 */
1361 	ata_ering_clear(&dev->ering);
1362 }
1363 
1364 /**
1365  *	ata_eh_detach_dev - detach ATA device
1366  *	@dev: ATA device to detach
1367  *
1368  *	Detach @dev.
1369  *
1370  *	LOCKING:
1371  *	None.
1372  */
1373 void ata_eh_detach_dev(struct ata_device *dev)
1374 {
1375 	struct ata_link *link = dev->link;
1376 	struct ata_port *ap = link->ap;
1377 	struct ata_eh_context *ehc = &link->eh_context;
1378 	unsigned long flags;
1379 
1380 	ata_dev_disable(dev);
1381 
1382 	spin_lock_irqsave(ap->lock, flags);
1383 
1384 	dev->flags &= ~ATA_DFLAG_DETACH;
1385 
1386 	if (ata_scsi_offline_dev(dev)) {
1387 		dev->flags |= ATA_DFLAG_DETACHED;
1388 		ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG;
1389 	}
1390 
1391 	/* clear per-dev EH info */
1392 	ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK);
1393 	ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK);
1394 	ehc->saved_xfer_mode[dev->devno] = 0;
1395 	ehc->saved_ncq_enabled &= ~(1 << dev->devno);
1396 
1397 	spin_unlock_irqrestore(ap->lock, flags);
1398 }
1399 
1400 /**
1401  *	ata_eh_about_to_do - about to perform eh_action
1402  *	@link: target ATA link
1403  *	@dev: target ATA dev for per-dev action (can be NULL)
1404  *	@action: action about to be performed
1405  *
1406  *	Called just before performing EH actions to clear related bits
1407  *	in @link->eh_info such that eh actions are not unnecessarily
1408  *	repeated.
1409  *
1410  *	LOCKING:
1411  *	None.
1412  */
1413 void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,
1414 			unsigned int action)
1415 {
1416 	struct ata_port *ap = link->ap;
1417 	struct ata_eh_info *ehi = &link->eh_info;
1418 	struct ata_eh_context *ehc = &link->eh_context;
1419 	unsigned long flags;
1420 
1421 	spin_lock_irqsave(ap->lock, flags);
1422 
1423 	ata_eh_clear_action(link, dev, ehi, action);
1424 
1425 	/* About to take EH action, set RECOVERED.  Ignore actions on
1426 	 * slave links as master will do them again.
1427 	 */
1428 	if (!(ehc->i.flags & ATA_EHI_QUIET) && link != ap->slave_link)
1429 		ap->pflags |= ATA_PFLAG_RECOVERED;
1430 
1431 	spin_unlock_irqrestore(ap->lock, flags);
1432 }
1433 
1434 /**
1435  *	ata_eh_done - EH action complete
1436 *	@ap: target ATA port
1437  *	@dev: target ATA dev for per-dev action (can be NULL)
1438  *	@action: action just completed
1439  *
1440  *	Called right after performing EH actions to clear related bits
1441  *	in @link->eh_context.
1442  *
1443  *	LOCKING:
1444  *	None.
1445  */
1446 void ata_eh_done(struct ata_link *link, struct ata_device *dev,
1447 		 unsigned int action)
1448 {
1449 	struct ata_eh_context *ehc = &link->eh_context;
1450 
1451 	ata_eh_clear_action(link, dev, &ehc->i, action);
1452 }
1453 
1454 /**
1455  *	ata_err_string - convert err_mask to descriptive string
1456  *	@err_mask: error mask to convert to string
1457  *
1458  *	Convert @err_mask to descriptive string.  Errors are
1459  *	prioritized according to severity and only the most severe
1460  *	error is reported.
1461  *
1462  *	LOCKING:
1463  *	None.
1464  *
1465  *	RETURNS:
1466  *	Descriptive string for @err_mask
1467  */
1468 static const char *ata_err_string(unsigned int err_mask)
1469 {
1470 	if (err_mask & AC_ERR_HOST_BUS)
1471 		return "host bus error";
1472 	if (err_mask & AC_ERR_ATA_BUS)
1473 		return "ATA bus error";
1474 	if (err_mask & AC_ERR_TIMEOUT)
1475 		return "timeout";
1476 	if (err_mask & AC_ERR_HSM)
1477 		return "HSM violation";
1478 	if (err_mask & AC_ERR_SYSTEM)
1479 		return "internal error";
1480 	if (err_mask & AC_ERR_MEDIA)
1481 		return "media error";
1482 	if (err_mask & AC_ERR_INVALID)
1483 		return "invalid argument";
1484 	if (err_mask & AC_ERR_DEV)
1485 		return "device error";
1486 	return "unknown error";
1487 }
1488 
1489 /**
1490  *	ata_read_log_page - read a specific log page
1491  *	@dev: target device
1492  *	@log: log to read
1493  *	@page: page to read
1494  *	@buf: buffer to store read page
1495  *	@sectors: number of sectors to read
1496  *
1497  *	Read log page using READ_LOG_EXT command.
1498  *
1499  *	LOCKING:
1500  *	Kernel thread context (may sleep).
1501  *
1502  *	RETURNS:
1503  *	0 on success, AC_ERR_* mask otherwise.
1504  */
1505 unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
1506 			       u8 page, void *buf, unsigned int sectors)
1507 {
1508 	struct ata_taskfile tf;
1509 	unsigned int err_mask;
1510 	bool dma = false;
1511 
1512 	DPRINTK("read log page - log 0x%x, page 0x%x\n", log, page);
1513 
1514 retry:
1515 	ata_tf_init(dev, &tf);
1516 	if (dev->dma_mode && ata_id_has_read_log_dma_ext(dev->id) &&
1517 	    !(dev->horkage & ATA_HORKAGE_NO_NCQ_LOG)) {
1518 		tf.command = ATA_CMD_READ_LOG_DMA_EXT;
1519 		tf.protocol = ATA_PROT_DMA;
1520 		dma = true;
1521 	} else {
1522 		tf.command = ATA_CMD_READ_LOG_EXT;
1523 		tf.protocol = ATA_PROT_PIO;
1524 		dma = false;
1525 	}
1526 	tf.lbal = log;
1527 	tf.lbam = page;
1528 	tf.nsect = sectors;
1529 	tf.hob_nsect = sectors >> 8;
1530 	tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_LBA48 | ATA_TFLAG_DEVICE;
1531 
1532 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
1533 				     buf, sectors * ATA_SECT_SIZE, 0);
1534 
1535 	if (err_mask && dma) {
1536 		dev->horkage |= ATA_HORKAGE_NO_NCQ_LOG;
1537 		ata_dev_warn(dev, "READ LOG DMA EXT failed, trying unqueued\n");
1538 		goto retry;
1539 	}
1540 
1541 	DPRINTK("EXIT, err_mask=%x\n", err_mask);
1542 	return err_mask;
1543 }
1544 
1545 /**
1546  *	ata_eh_read_log_10h - Read log page 10h for NCQ error details
1547  *	@dev: Device to read log page 10h from
1548  *	@tag: Resulting tag of the failed command
1549  *	@tf: Resulting taskfile registers of the failed command
1550  *
1551  *	Read log page 10h to obtain NCQ error details and clear error
1552  *	condition.
1553  *
1554  *	LOCKING:
1555  *	Kernel thread context (may sleep).
1556  *
1557  *	RETURNS:
1558  *	0 on success, -errno otherwise.
1559  */
1560 static int ata_eh_read_log_10h(struct ata_device *dev,
1561 			       int *tag, struct ata_taskfile *tf)
1562 {
1563 	u8 *buf = dev->link->ap->sector_buf;
1564 	unsigned int err_mask;
1565 	u8 csum;
1566 	int i;
1567 
1568 	err_mask = ata_read_log_page(dev, ATA_LOG_SATA_NCQ, 0, buf, 1);
1569 	if (err_mask)
1570 		return -EIO;
1571 
1572 	csum = 0;
1573 	for (i = 0; i < ATA_SECT_SIZE; i++)
1574 		csum += buf[i];
1575 	if (csum)
1576 		ata_dev_warn(dev, "invalid checksum 0x%x on log page 10h\n",
1577 			     csum);
1578 
1579 	if (buf[0] & 0x80)
1580 		return -ENOENT;
1581 
1582 	*tag = buf[0] & 0x1f;
1583 
1584 	tf->command = buf[2];
1585 	tf->feature = buf[3];
1586 	tf->lbal = buf[4];
1587 	tf->lbam = buf[5];
1588 	tf->lbah = buf[6];
1589 	tf->device = buf[7];
1590 	tf->hob_lbal = buf[8];
1591 	tf->hob_lbam = buf[9];
1592 	tf->hob_lbah = buf[10];
1593 	tf->nsect = buf[12];
1594 	tf->hob_nsect = buf[13];
1595 
1596 	return 0;
1597 }
1598 
1599 /**
1600  *	atapi_eh_tur - perform ATAPI TEST_UNIT_READY
1601  *	@dev: target ATAPI device
1602  *	@r_sense_key: out parameter for sense_key
1603  *
1604  *	Perform ATAPI TEST_UNIT_READY.
1605  *
1606  *	LOCKING:
1607  *	EH context (may sleep).
1608  *
1609  *	RETURNS:
1610  *	0 on success, AC_ERR_* mask on failure.
1611  */
1612 unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key)
1613 {
1614 	u8 cdb[ATAPI_CDB_LEN] = { TEST_UNIT_READY, 0, 0, 0, 0, 0 };
1615 	struct ata_taskfile tf;
1616 	unsigned int err_mask;
1617 
1618 	ata_tf_init(dev, &tf);
1619 
1620 	tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
1621 	tf.command = ATA_CMD_PACKET;
1622 	tf.protocol = ATAPI_PROT_NODATA;
1623 
1624 	err_mask = ata_exec_internal(dev, &tf, cdb, DMA_NONE, NULL, 0, 0);
1625 	if (err_mask == AC_ERR_DEV)
1626 		*r_sense_key = tf.feature >> 4;
1627 	return err_mask;
1628 }
1629 
1630 /**
1631  *	atapi_eh_request_sense - perform ATAPI REQUEST_SENSE
1632  *	@dev: device to perform REQUEST_SENSE to
1633  *	@sense_buf: result sense data buffer (SCSI_SENSE_BUFFERSIZE bytes long)
1634  *	@dfl_sense_key: default sense key to use
1635  *
1636  *	Perform ATAPI REQUEST_SENSE after the device reported CHECK
1637  *	SENSE.  This function is EH helper.
1638  *
1639  *	LOCKING:
1640  *	Kernel thread context (may sleep).
1641  *
1642  *	RETURNS:
1643  *	0 on success, AC_ERR_* mask on failure
1644  */
1645 unsigned int atapi_eh_request_sense(struct ata_device *dev,
1646 					   u8 *sense_buf, u8 dfl_sense_key)
1647 {
1648 	u8 cdb[ATAPI_CDB_LEN] =
1649 		{ REQUEST_SENSE, 0, 0, 0, SCSI_SENSE_BUFFERSIZE, 0 };
1650 	struct ata_port *ap = dev->link->ap;
1651 	struct ata_taskfile tf;
1652 
1653 	DPRINTK("ATAPI request sense\n");
1654 
1655 	memset(sense_buf, 0, SCSI_SENSE_BUFFERSIZE);
1656 
1657 	/* initialize sense_buf with the error register,
1658 	 * for the case where they are -not- overwritten
1659 	 */
1660 	sense_buf[0] = 0x70;
1661 	sense_buf[2] = dfl_sense_key;
1662 
1663 	/* some devices time out if garbage left in tf */
1664 	ata_tf_init(dev, &tf);
1665 
1666 	tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
1667 	tf.command = ATA_CMD_PACKET;
1668 
1669 	/* is it pointless to prefer PIO for "safety reasons"? */
1670 	if (ap->flags & ATA_FLAG_PIO_DMA) {
1671 		tf.protocol = ATAPI_PROT_DMA;
1672 		tf.feature |= ATAPI_PKT_DMA;
1673 	} else {
1674 		tf.protocol = ATAPI_PROT_PIO;
1675 		tf.lbam = SCSI_SENSE_BUFFERSIZE;
1676 		tf.lbah = 0;
1677 	}
1678 
1679 	return ata_exec_internal(dev, &tf, cdb, DMA_FROM_DEVICE,
1680 				 sense_buf, SCSI_SENSE_BUFFERSIZE, 0);
1681 }
1682 
1683 /**
1684  *	ata_eh_analyze_serror - analyze SError for a failed port
1685  *	@link: ATA link to analyze SError for
1686  *
1687  *	Analyze SError if available and further determine cause of
1688  *	failure.
1689  *
1690  *	LOCKING:
1691  *	None.
1692  */
1693 static void ata_eh_analyze_serror(struct ata_link *link)
1694 {
1695 	struct ata_eh_context *ehc = &link->eh_context;
1696 	u32 serror = ehc->i.serror;
1697 	unsigned int err_mask = 0, action = 0;
1698 	u32 hotplug_mask;
1699 
1700 	if (serror & (SERR_PERSISTENT | SERR_DATA)) {
1701 		err_mask |= AC_ERR_ATA_BUS;
1702 		action |= ATA_EH_RESET;
1703 	}
1704 	if (serror & SERR_PROTOCOL) {
1705 		err_mask |= AC_ERR_HSM;
1706 		action |= ATA_EH_RESET;
1707 	}
1708 	if (serror & SERR_INTERNAL) {
1709 		err_mask |= AC_ERR_SYSTEM;
1710 		action |= ATA_EH_RESET;
1711 	}
1712 
1713 	/* Determine whether a hotplug event has occurred.  Both
1714 	 * SError.N/X are considered hotplug events for enabled or
1715 	 * host links.  For disabled PMP links, only N bit is
1716 	 * considered as X bit is left at 1 for link plugging.
1717 	 */
1718 	if (link->lpm_policy > ATA_LPM_MAX_POWER)
1719 		hotplug_mask = 0;	/* hotplug doesn't work w/ LPM */
1720 	else if (!(link->flags & ATA_LFLAG_DISABLED) || ata_is_host_link(link))
1721 		hotplug_mask = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
1722 	else
1723 		hotplug_mask = SERR_PHYRDY_CHG;
1724 
1725 	if (serror & hotplug_mask)
1726 		ata_ehi_hotplugged(&ehc->i);
1727 
1728 	ehc->i.err_mask |= err_mask;
1729 	ehc->i.action |= action;
1730 }
1731 
1732 /**
1733  *	ata_eh_analyze_ncq_error - analyze NCQ error
1734  *	@link: ATA link to analyze NCQ error for
1735  *
1736  *	Read log page 10h, determine the offending qc and acquire
1737  *	error status TF.  For NCQ device errors, all LLDDs have to do
1738  *	is setting AC_ERR_DEV in ehi->err_mask.  This function takes
1739  *	care of the rest.
1740  *
1741  *	LOCKING:
1742  *	Kernel thread context (may sleep).
1743  */
1744 void ata_eh_analyze_ncq_error(struct ata_link *link)
1745 {
1746 	struct ata_port *ap = link->ap;
1747 	struct ata_eh_context *ehc = &link->eh_context;
1748 	struct ata_device *dev = link->device;
1749 	struct ata_queued_cmd *qc;
1750 	struct ata_taskfile tf;
1751 	int tag, rc;
1752 
1753 	/* if frozen, we can't do much */
1754 	if (ap->pflags & ATA_PFLAG_FROZEN)
1755 		return;
1756 
1757 	/* is it NCQ device error? */
1758 	if (!link->sactive || !(ehc->i.err_mask & AC_ERR_DEV))
1759 		return;
1760 
1761 	/* has LLDD analyzed already? */
1762 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
1763 		qc = __ata_qc_from_tag(ap, tag);
1764 
1765 		if (!(qc->flags & ATA_QCFLAG_FAILED))
1766 			continue;
1767 
1768 		if (qc->err_mask)
1769 			return;
1770 	}
1771 
1772 	/* okay, this error is ours */
1773 	memset(&tf, 0, sizeof(tf));
1774 	rc = ata_eh_read_log_10h(dev, &tag, &tf);
1775 	if (rc) {
1776 		ata_link_err(link, "failed to read log page 10h (errno=%d)\n",
1777 			     rc);
1778 		return;
1779 	}
1780 
1781 	if (!(link->sactive & (1 << tag))) {
1782 		ata_link_err(link, "log page 10h reported inactive tag %d\n",
1783 			     tag);
1784 		return;
1785 	}
1786 
1787 	/* we've got the perpetrator, condemn it */
1788 	qc = __ata_qc_from_tag(ap, tag);
1789 	memcpy(&qc->result_tf, &tf, sizeof(tf));
1790 	qc->result_tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_LBA | ATA_TFLAG_LBA48;
1791 	qc->err_mask |= AC_ERR_DEV | AC_ERR_NCQ;
1792 	ehc->i.err_mask &= ~AC_ERR_DEV;
1793 }
1794 
1795 /**
1796  *	ata_eh_analyze_tf - analyze taskfile of a failed qc
1797  *	@qc: qc to analyze
1798  *	@tf: Taskfile registers to analyze
1799  *
1800  *	Analyze taskfile of @qc and further determine cause of
1801  *	failure.  This function also requests ATAPI sense data if
1802  *	available.
1803  *
1804  *	LOCKING:
1805  *	Kernel thread context (may sleep).
1806  *
1807  *	RETURNS:
1808  *	Determined recovery action
1809  */
1810 static unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc,
1811 				      const struct ata_taskfile *tf)
1812 {
1813 	unsigned int tmp, action = 0;
1814 	u8 stat = tf->command, err = tf->feature;
1815 
1816 	if ((stat & (ATA_BUSY | ATA_DRQ | ATA_DRDY)) != ATA_DRDY) {
1817 		qc->err_mask |= AC_ERR_HSM;
1818 		return ATA_EH_RESET;
1819 	}
1820 
1821 	if (stat & (ATA_ERR | ATA_DF))
1822 		qc->err_mask |= AC_ERR_DEV;
1823 	else
1824 		return 0;
1825 
1826 	switch (qc->dev->class) {
1827 	case ATA_DEV_ATA:
1828 	case ATA_DEV_ZAC:
1829 		if (err & ATA_ICRC)
1830 			qc->err_mask |= AC_ERR_ATA_BUS;
1831 		if (err & (ATA_UNC | ATA_AMNF))
1832 			qc->err_mask |= AC_ERR_MEDIA;
1833 		if (err & ATA_IDNF)
1834 			qc->err_mask |= AC_ERR_INVALID;
1835 		break;
1836 
1837 	case ATA_DEV_ATAPI:
1838 		if (!(qc->ap->pflags & ATA_PFLAG_FROZEN)) {
1839 			tmp = atapi_eh_request_sense(qc->dev,
1840 						qc->scsicmd->sense_buffer,
1841 						qc->result_tf.feature >> 4);
1842 			if (!tmp) {
1843 				/* ATA_QCFLAG_SENSE_VALID is used to
1844 				 * tell atapi_qc_complete() that sense
1845 				 * data is already valid.
1846 				 *
1847 				 * TODO: interpret sense data and set
1848 				 * appropriate err_mask.
1849 				 */
1850 				qc->flags |= ATA_QCFLAG_SENSE_VALID;
1851 			} else
1852 				qc->err_mask |= tmp;
1853 		}
1854 	}
1855 
1856 	if (qc->err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT | AC_ERR_ATA_BUS))
1857 		action |= ATA_EH_RESET;
1858 
1859 	return action;
1860 }
1861 
1862 static int ata_eh_categorize_error(unsigned int eflags, unsigned int err_mask,
1863 				   int *xfer_ok)
1864 {
1865 	int base = 0;
1866 
1867 	if (!(eflags & ATA_EFLAG_DUBIOUS_XFER))
1868 		*xfer_ok = 1;
1869 
1870 	if (!*xfer_ok)
1871 		base = ATA_ECAT_DUBIOUS_NONE;
1872 
1873 	if (err_mask & AC_ERR_ATA_BUS)
1874 		return base + ATA_ECAT_ATA_BUS;
1875 
1876 	if (err_mask & AC_ERR_TIMEOUT)
1877 		return base + ATA_ECAT_TOUT_HSM;
1878 
1879 	if (eflags & ATA_EFLAG_IS_IO) {
1880 		if (err_mask & AC_ERR_HSM)
1881 			return base + ATA_ECAT_TOUT_HSM;
1882 		if ((err_mask &
1883 		     (AC_ERR_DEV|AC_ERR_MEDIA|AC_ERR_INVALID)) == AC_ERR_DEV)
1884 			return base + ATA_ECAT_UNK_DEV;
1885 	}
1886 
1887 	return 0;
1888 }
1889 
1890 struct speed_down_verdict_arg {
1891 	u64 since;
1892 	int xfer_ok;
1893 	int nr_errors[ATA_ECAT_NR];
1894 };
1895 
1896 static int speed_down_verdict_cb(struct ata_ering_entry *ent, void *void_arg)
1897 {
1898 	struct speed_down_verdict_arg *arg = void_arg;
1899 	int cat;
1900 
1901 	if ((ent->eflags & ATA_EFLAG_OLD_ER) || (ent->timestamp < arg->since))
1902 		return -1;
1903 
1904 	cat = ata_eh_categorize_error(ent->eflags, ent->err_mask,
1905 				      &arg->xfer_ok);
1906 	arg->nr_errors[cat]++;
1907 
1908 	return 0;
1909 }
1910 
1911 /**
1912  *	ata_eh_speed_down_verdict - Determine speed down verdict
1913  *	@dev: Device of interest
1914  *
1915  *	This function examines error ring of @dev and determines
1916  *	whether NCQ needs to be turned off, transfer speed should be
1917  *	stepped down, or falling back to PIO is necessary.
1918  *
1919  *	ECAT_ATA_BUS	: ATA_BUS error for any command
1920  *
1921  *	ECAT_TOUT_HSM	: TIMEOUT for any command or HSM violation for
1922  *			  IO commands
1923  *
1924  *	ECAT_UNK_DEV	: Unknown DEV error for IO commands
1925  *
1926  *	ECAT_DUBIOUS_*	: Identical to above three but occurred while
1927  *			  data transfer hasn't been verified.
1928  *
1929  *	Verdicts are
1930  *
1931  *	NCQ_OFF		: Turn off NCQ.
1932  *
1933  *	SPEED_DOWN	: Speed down transfer speed but don't fall back
1934  *			  to PIO.
1935  *
1936  *	FALLBACK_TO_PIO	: Fall back to PIO.
1937  *
1938  *	Even if multiple verdicts are returned, only one action is
1939  *	taken per error.  An action triggered by non-DUBIOUS errors
1940  *	clears ering, while one triggered by DUBIOUS_* errors doesn't.
1941  *	This is to expedite speed down decisions right after device is
1942  *	initially configured.
1943  *
1944  *	The followings are speed down rules.  #1 and #2 deal with
1945  *	DUBIOUS errors.
1946  *
1947  *	1. If more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors
1948  *	   occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO.
1949  *
1950  *	2. If more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors
1951  *	   occurred during last 5 mins, NCQ_OFF.
1952  *
1953  *	3. If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors
1954  *	   occurred during last 5 mins, FALLBACK_TO_PIO
1955  *
1956  *	4. If more than 3 TOUT_HSM or UNK_DEV errors occurred
1957  *	   during last 10 mins, NCQ_OFF.
1958  *
1959  *	5. If more than 3 ATA_BUS or TOUT_HSM errors, or more than 6
1960  *	   UNK_DEV errors occurred during last 10 mins, SPEED_DOWN.
1961  *
1962  *	LOCKING:
1963  *	Inherited from caller.
1964  *
1965  *	RETURNS:
1966  *	OR of ATA_EH_SPDN_* flags.
1967  */
1968 static unsigned int ata_eh_speed_down_verdict(struct ata_device *dev)
1969 {
1970 	const u64 j5mins = 5LLU * 60 * HZ, j10mins = 10LLU * 60 * HZ;
1971 	u64 j64 = get_jiffies_64();
1972 	struct speed_down_verdict_arg arg;
1973 	unsigned int verdict = 0;
1974 
1975 	/* scan past 5 mins of error history */
1976 	memset(&arg, 0, sizeof(arg));
1977 	arg.since = j64 - min(j64, j5mins);
1978 	ata_ering_map(&dev->ering, speed_down_verdict_cb, &arg);
1979 
1980 	if (arg.nr_errors[ATA_ECAT_DUBIOUS_ATA_BUS] +
1981 	    arg.nr_errors[ATA_ECAT_DUBIOUS_TOUT_HSM] > 1)
1982 		verdict |= ATA_EH_SPDN_SPEED_DOWN |
1983 			ATA_EH_SPDN_FALLBACK_TO_PIO | ATA_EH_SPDN_KEEP_ERRORS;
1984 
1985 	if (arg.nr_errors[ATA_ECAT_DUBIOUS_TOUT_HSM] +
1986 	    arg.nr_errors[ATA_ECAT_DUBIOUS_UNK_DEV] > 1)
1987 		verdict |= ATA_EH_SPDN_NCQ_OFF | ATA_EH_SPDN_KEEP_ERRORS;
1988 
1989 	if (arg.nr_errors[ATA_ECAT_ATA_BUS] +
1990 	    arg.nr_errors[ATA_ECAT_TOUT_HSM] +
1991 	    arg.nr_errors[ATA_ECAT_UNK_DEV] > 6)
1992 		verdict |= ATA_EH_SPDN_FALLBACK_TO_PIO;
1993 
1994 	/* scan past 10 mins of error history */
1995 	memset(&arg, 0, sizeof(arg));
1996 	arg.since = j64 - min(j64, j10mins);
1997 	ata_ering_map(&dev->ering, speed_down_verdict_cb, &arg);
1998 
1999 	if (arg.nr_errors[ATA_ECAT_TOUT_HSM] +
2000 	    arg.nr_errors[ATA_ECAT_UNK_DEV] > 3)
2001 		verdict |= ATA_EH_SPDN_NCQ_OFF;
2002 
2003 	if (arg.nr_errors[ATA_ECAT_ATA_BUS] +
2004 	    arg.nr_errors[ATA_ECAT_TOUT_HSM] > 3 ||
2005 	    arg.nr_errors[ATA_ECAT_UNK_DEV] > 6)
2006 		verdict |= ATA_EH_SPDN_SPEED_DOWN;
2007 
2008 	return verdict;
2009 }
2010 
2011 /**
2012  *	ata_eh_speed_down - record error and speed down if necessary
2013  *	@dev: Failed device
2014  *	@eflags: mask of ATA_EFLAG_* flags
2015  *	@err_mask: err_mask of the error
2016  *
2017  *	Record error and examine error history to determine whether
2018  *	adjusting transmission speed is necessary.  It also sets
2019  *	transmission limits appropriately if such adjustment is
2020  *	necessary.
2021  *
2022  *	LOCKING:
2023  *	Kernel thread context (may sleep).
2024  *
2025  *	RETURNS:
2026  *	Determined recovery action.
2027  */
2028 static unsigned int ata_eh_speed_down(struct ata_device *dev,
2029 				unsigned int eflags, unsigned int err_mask)
2030 {
2031 	struct ata_link *link = ata_dev_phys_link(dev);
2032 	int xfer_ok = 0;
2033 	unsigned int verdict;
2034 	unsigned int action = 0;
2035 
2036 	/* don't bother if Cat-0 error */
2037 	if (ata_eh_categorize_error(eflags, err_mask, &xfer_ok) == 0)
2038 		return 0;
2039 
2040 	/* record error and determine whether speed down is necessary */
2041 	ata_ering_record(&dev->ering, eflags, err_mask);
2042 	verdict = ata_eh_speed_down_verdict(dev);
2043 
2044 	/* turn off NCQ? */
2045 	if ((verdict & ATA_EH_SPDN_NCQ_OFF) &&
2046 	    (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ |
2047 			   ATA_DFLAG_NCQ_OFF)) == ATA_DFLAG_NCQ) {
2048 		dev->flags |= ATA_DFLAG_NCQ_OFF;
2049 		ata_dev_warn(dev, "NCQ disabled due to excessive errors\n");
2050 		goto done;
2051 	}
2052 
2053 	/* speed down? */
2054 	if (verdict & ATA_EH_SPDN_SPEED_DOWN) {
2055 		/* speed down SATA link speed if possible */
2056 		if (sata_down_spd_limit(link, 0) == 0) {
2057 			action |= ATA_EH_RESET;
2058 			goto done;
2059 		}
2060 
2061 		/* lower transfer mode */
2062 		if (dev->spdn_cnt < 2) {
2063 			static const int dma_dnxfer_sel[] =
2064 				{ ATA_DNXFER_DMA, ATA_DNXFER_40C };
2065 			static const int pio_dnxfer_sel[] =
2066 				{ ATA_DNXFER_PIO, ATA_DNXFER_FORCE_PIO0 };
2067 			int sel;
2068 
2069 			if (dev->xfer_shift != ATA_SHIFT_PIO)
2070 				sel = dma_dnxfer_sel[dev->spdn_cnt];
2071 			else
2072 				sel = pio_dnxfer_sel[dev->spdn_cnt];
2073 
2074 			dev->spdn_cnt++;
2075 
2076 			if (ata_down_xfermask_limit(dev, sel) == 0) {
2077 				action |= ATA_EH_RESET;
2078 				goto done;
2079 			}
2080 		}
2081 	}
2082 
2083 	/* Fall back to PIO?  Slowing down to PIO is meaningless for
2084 	 * SATA ATA devices.  Consider it only for PATA and SATAPI.
2085 	 */
2086 	if ((verdict & ATA_EH_SPDN_FALLBACK_TO_PIO) && (dev->spdn_cnt >= 2) &&
2087 	    (link->ap->cbl != ATA_CBL_SATA || dev->class == ATA_DEV_ATAPI) &&
2088 	    (dev->xfer_shift != ATA_SHIFT_PIO)) {
2089 		if (ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO) == 0) {
2090 			dev->spdn_cnt = 0;
2091 			action |= ATA_EH_RESET;
2092 			goto done;
2093 		}
2094 	}
2095 
2096 	return 0;
2097  done:
2098 	/* device has been slowed down, blow error history */
2099 	if (!(verdict & ATA_EH_SPDN_KEEP_ERRORS))
2100 		ata_ering_clear(&dev->ering);
2101 	return action;
2102 }
2103 
2104 /**
2105  *	ata_eh_worth_retry - analyze error and decide whether to retry
2106  *	@qc: qc to possibly retry
2107  *
2108  *	Look at the cause of the error and decide if a retry
2109  * 	might be useful or not.  We don't want to retry media errors
2110  *	because the drive itself has probably already taken 10-30 seconds
2111  *	doing its own internal retries before reporting the failure.
2112  */
2113 static inline int ata_eh_worth_retry(struct ata_queued_cmd *qc)
2114 {
2115 	if (qc->err_mask & AC_ERR_MEDIA)
2116 		return 0;	/* don't retry media errors */
2117 	if (qc->flags & ATA_QCFLAG_IO)
2118 		return 1;	/* otherwise retry anything from fs stack */
2119 	if (qc->err_mask & AC_ERR_INVALID)
2120 		return 0;	/* don't retry these */
2121 	return qc->err_mask != AC_ERR_DEV;  /* retry if not dev error */
2122 }
2123 
2124 /**
2125  *	ata_eh_link_autopsy - analyze error and determine recovery action
2126  *	@link: host link to perform autopsy on
2127  *
2128  *	Analyze why @link failed and determine which recovery actions
2129  *	are needed.  This function also sets more detailed AC_ERR_*
2130  *	values and fills sense data for ATAPI CHECK SENSE.
2131  *
2132  *	LOCKING:
2133  *	Kernel thread context (may sleep).
2134  */
2135 static void ata_eh_link_autopsy(struct ata_link *link)
2136 {
2137 	struct ata_port *ap = link->ap;
2138 	struct ata_eh_context *ehc = &link->eh_context;
2139 	struct ata_device *dev;
2140 	unsigned int all_err_mask = 0, eflags = 0;
2141 	int tag;
2142 	u32 serror;
2143 	int rc;
2144 
2145 	DPRINTK("ENTER\n");
2146 
2147 	if (ehc->i.flags & ATA_EHI_NO_AUTOPSY)
2148 		return;
2149 
2150 	/* obtain and analyze SError */
2151 	rc = sata_scr_read(link, SCR_ERROR, &serror);
2152 	if (rc == 0) {
2153 		ehc->i.serror |= serror;
2154 		ata_eh_analyze_serror(link);
2155 	} else if (rc != -EOPNOTSUPP) {
2156 		/* SError read failed, force reset and probing */
2157 		ehc->i.probe_mask |= ATA_ALL_DEVICES;
2158 		ehc->i.action |= ATA_EH_RESET;
2159 		ehc->i.err_mask |= AC_ERR_OTHER;
2160 	}
2161 
2162 	/* analyze NCQ failure */
2163 	ata_eh_analyze_ncq_error(link);
2164 
2165 	/* any real error trumps AC_ERR_OTHER */
2166 	if (ehc->i.err_mask & ~AC_ERR_OTHER)
2167 		ehc->i.err_mask &= ~AC_ERR_OTHER;
2168 
2169 	all_err_mask |= ehc->i.err_mask;
2170 
2171 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
2172 		struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
2173 
2174 		if (!(qc->flags & ATA_QCFLAG_FAILED) ||
2175 		    ata_dev_phys_link(qc->dev) != link)
2176 			continue;
2177 
2178 		/* inherit upper level err_mask */
2179 		qc->err_mask |= ehc->i.err_mask;
2180 
2181 		/* analyze TF */
2182 		ehc->i.action |= ata_eh_analyze_tf(qc, &qc->result_tf);
2183 
2184 		/* DEV errors are probably spurious in case of ATA_BUS error */
2185 		if (qc->err_mask & AC_ERR_ATA_BUS)
2186 			qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_MEDIA |
2187 					  AC_ERR_INVALID);
2188 
2189 		/* any real error trumps unknown error */
2190 		if (qc->err_mask & ~AC_ERR_OTHER)
2191 			qc->err_mask &= ~AC_ERR_OTHER;
2192 
2193 		/* SENSE_VALID trumps dev/unknown error and revalidation */
2194 		if (qc->flags & ATA_QCFLAG_SENSE_VALID)
2195 			qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER);
2196 
2197 		/* determine whether the command is worth retrying */
2198 		if (ata_eh_worth_retry(qc))
2199 			qc->flags |= ATA_QCFLAG_RETRY;
2200 
2201 		/* accumulate error info */
2202 		ehc->i.dev = qc->dev;
2203 		all_err_mask |= qc->err_mask;
2204 		if (qc->flags & ATA_QCFLAG_IO)
2205 			eflags |= ATA_EFLAG_IS_IO;
2206 		trace_ata_eh_link_autopsy_qc(qc);
2207 	}
2208 
2209 	/* enforce default EH actions */
2210 	if (ap->pflags & ATA_PFLAG_FROZEN ||
2211 	    all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT))
2212 		ehc->i.action |= ATA_EH_RESET;
2213 	else if (((eflags & ATA_EFLAG_IS_IO) && all_err_mask) ||
2214 		 (!(eflags & ATA_EFLAG_IS_IO) && (all_err_mask & ~AC_ERR_DEV)))
2215 		ehc->i.action |= ATA_EH_REVALIDATE;
2216 
2217 	/* If we have offending qcs and the associated failed device,
2218 	 * perform per-dev EH action only on the offending device.
2219 	 */
2220 	if (ehc->i.dev) {
2221 		ehc->i.dev_action[ehc->i.dev->devno] |=
2222 			ehc->i.action & ATA_EH_PERDEV_MASK;
2223 		ehc->i.action &= ~ATA_EH_PERDEV_MASK;
2224 	}
2225 
2226 	/* propagate timeout to host link */
2227 	if ((all_err_mask & AC_ERR_TIMEOUT) && !ata_is_host_link(link))
2228 		ap->link.eh_context.i.err_mask |= AC_ERR_TIMEOUT;
2229 
2230 	/* record error and consider speeding down */
2231 	dev = ehc->i.dev;
2232 	if (!dev && ((ata_link_max_devices(link) == 1 &&
2233 		      ata_dev_enabled(link->device))))
2234 	    dev = link->device;
2235 
2236 	if (dev) {
2237 		if (dev->flags & ATA_DFLAG_DUBIOUS_XFER)
2238 			eflags |= ATA_EFLAG_DUBIOUS_XFER;
2239 		ehc->i.action |= ata_eh_speed_down(dev, eflags, all_err_mask);
2240 	}
2241 	trace_ata_eh_link_autopsy(dev, ehc->i.action, all_err_mask);
2242 	DPRINTK("EXIT\n");
2243 }
2244 
2245 /**
2246  *	ata_eh_autopsy - analyze error and determine recovery action
2247  *	@ap: host port to perform autopsy on
2248  *
2249  *	Analyze all links of @ap and determine why they failed and
2250  *	which recovery actions are needed.
2251  *
2252  *	LOCKING:
2253  *	Kernel thread context (may sleep).
2254  */
2255 void ata_eh_autopsy(struct ata_port *ap)
2256 {
2257 	struct ata_link *link;
2258 
2259 	ata_for_each_link(link, ap, EDGE)
2260 		ata_eh_link_autopsy(link);
2261 
2262 	/* Handle the frigging slave link.  Autopsy is done similarly
2263 	 * but actions and flags are transferred over to the master
2264 	 * link and handled from there.
2265 	 */
2266 	if (ap->slave_link) {
2267 		struct ata_eh_context *mehc = &ap->link.eh_context;
2268 		struct ata_eh_context *sehc = &ap->slave_link->eh_context;
2269 
2270 		/* transfer control flags from master to slave */
2271 		sehc->i.flags |= mehc->i.flags & ATA_EHI_TO_SLAVE_MASK;
2272 
2273 		/* perform autopsy on the slave link */
2274 		ata_eh_link_autopsy(ap->slave_link);
2275 
2276 		/* transfer actions from slave to master and clear slave */
2277 		ata_eh_about_to_do(ap->slave_link, NULL, ATA_EH_ALL_ACTIONS);
2278 		mehc->i.action		|= sehc->i.action;
2279 		mehc->i.dev_action[1]	|= sehc->i.dev_action[1];
2280 		mehc->i.flags		|= sehc->i.flags;
2281 		ata_eh_done(ap->slave_link, NULL, ATA_EH_ALL_ACTIONS);
2282 	}
2283 
2284 	/* Autopsy of fanout ports can affect host link autopsy.
2285 	 * Perform host link autopsy last.
2286 	 */
2287 	if (sata_pmp_attached(ap))
2288 		ata_eh_link_autopsy(&ap->link);
2289 }
2290 
2291 /**
2292  *	ata_get_cmd_descript - get description for ATA command
2293  *	@command: ATA command code to get description for
2294  *
2295  *	Return a textual description of the given command, or NULL if the
2296  *	command is not known.
2297  *
2298  *	LOCKING:
2299  *	None
2300  */
2301 const char *ata_get_cmd_descript(u8 command)
2302 {
2303 #ifdef CONFIG_ATA_VERBOSE_ERROR
2304 	static const struct
2305 	{
2306 		u8 command;
2307 		const char *text;
2308 	} cmd_descr[] = {
2309 		{ ATA_CMD_DEV_RESET,		"DEVICE RESET" },
2310 		{ ATA_CMD_CHK_POWER,		"CHECK POWER MODE" },
2311 		{ ATA_CMD_STANDBY,		"STANDBY" },
2312 		{ ATA_CMD_IDLE,			"IDLE" },
2313 		{ ATA_CMD_EDD,			"EXECUTE DEVICE DIAGNOSTIC" },
2314 		{ ATA_CMD_DOWNLOAD_MICRO,	"DOWNLOAD MICROCODE" },
2315 		{ ATA_CMD_DOWNLOAD_MICRO_DMA,	"DOWNLOAD MICROCODE DMA" },
2316 		{ ATA_CMD_NOP,			"NOP" },
2317 		{ ATA_CMD_FLUSH,		"FLUSH CACHE" },
2318 		{ ATA_CMD_FLUSH_EXT,		"FLUSH CACHE EXT" },
2319 		{ ATA_CMD_ID_ATA,		"IDENTIFY DEVICE" },
2320 		{ ATA_CMD_ID_ATAPI,		"IDENTIFY PACKET DEVICE" },
2321 		{ ATA_CMD_SERVICE,		"SERVICE" },
2322 		{ ATA_CMD_READ,			"READ DMA" },
2323 		{ ATA_CMD_READ_EXT,		"READ DMA EXT" },
2324 		{ ATA_CMD_READ_QUEUED,		"READ DMA QUEUED" },
2325 		{ ATA_CMD_READ_STREAM_EXT,	"READ STREAM EXT" },
2326 		{ ATA_CMD_READ_STREAM_DMA_EXT,  "READ STREAM DMA EXT" },
2327 		{ ATA_CMD_WRITE,		"WRITE DMA" },
2328 		{ ATA_CMD_WRITE_EXT,		"WRITE DMA EXT" },
2329 		{ ATA_CMD_WRITE_QUEUED,		"WRITE DMA QUEUED EXT" },
2330 		{ ATA_CMD_WRITE_STREAM_EXT,	"WRITE STREAM EXT" },
2331 		{ ATA_CMD_WRITE_STREAM_DMA_EXT, "WRITE STREAM DMA EXT" },
2332 		{ ATA_CMD_WRITE_FUA_EXT,	"WRITE DMA FUA EXT" },
2333 		{ ATA_CMD_WRITE_QUEUED_FUA_EXT, "WRITE DMA QUEUED FUA EXT" },
2334 		{ ATA_CMD_FPDMA_READ,		"READ FPDMA QUEUED" },
2335 		{ ATA_CMD_FPDMA_WRITE,		"WRITE FPDMA QUEUED" },
2336 		{ ATA_CMD_FPDMA_SEND,		"SEND FPDMA QUEUED" },
2337 		{ ATA_CMD_FPDMA_RECV,		"RECEIVE FPDMA QUEUED" },
2338 		{ ATA_CMD_PIO_READ,		"READ SECTOR(S)" },
2339 		{ ATA_CMD_PIO_READ_EXT,		"READ SECTOR(S) EXT" },
2340 		{ ATA_CMD_PIO_WRITE,		"WRITE SECTOR(S)" },
2341 		{ ATA_CMD_PIO_WRITE_EXT,	"WRITE SECTOR(S) EXT" },
2342 		{ ATA_CMD_READ_MULTI,		"READ MULTIPLE" },
2343 		{ ATA_CMD_READ_MULTI_EXT,	"READ MULTIPLE EXT" },
2344 		{ ATA_CMD_WRITE_MULTI,		"WRITE MULTIPLE" },
2345 		{ ATA_CMD_WRITE_MULTI_EXT,	"WRITE MULTIPLE EXT" },
2346 		{ ATA_CMD_WRITE_MULTI_FUA_EXT,	"WRITE MULTIPLE FUA EXT" },
2347 		{ ATA_CMD_SET_FEATURES,		"SET FEATURES" },
2348 		{ ATA_CMD_SET_MULTI,		"SET MULTIPLE MODE" },
2349 		{ ATA_CMD_VERIFY,		"READ VERIFY SECTOR(S)" },
2350 		{ ATA_CMD_VERIFY_EXT,		"READ VERIFY SECTOR(S) EXT" },
2351 		{ ATA_CMD_WRITE_UNCORR_EXT,	"WRITE UNCORRECTABLE EXT" },
2352 		{ ATA_CMD_STANDBYNOW1,		"STANDBY IMMEDIATE" },
2353 		{ ATA_CMD_IDLEIMMEDIATE,	"IDLE IMMEDIATE" },
2354 		{ ATA_CMD_SLEEP,		"SLEEP" },
2355 		{ ATA_CMD_INIT_DEV_PARAMS,	"INITIALIZE DEVICE PARAMETERS" },
2356 		{ ATA_CMD_READ_NATIVE_MAX,	"READ NATIVE MAX ADDRESS" },
2357 		{ ATA_CMD_READ_NATIVE_MAX_EXT,	"READ NATIVE MAX ADDRESS EXT" },
2358 		{ ATA_CMD_SET_MAX,		"SET MAX ADDRESS" },
2359 		{ ATA_CMD_SET_MAX_EXT,		"SET MAX ADDRESS EXT" },
2360 		{ ATA_CMD_READ_LOG_EXT,		"READ LOG EXT" },
2361 		{ ATA_CMD_WRITE_LOG_EXT,	"WRITE LOG EXT" },
2362 		{ ATA_CMD_READ_LOG_DMA_EXT,	"READ LOG DMA EXT" },
2363 		{ ATA_CMD_WRITE_LOG_DMA_EXT,	"WRITE LOG DMA EXT" },
2364 		{ ATA_CMD_TRUSTED_NONDATA,	"TRUSTED NON-DATA" },
2365 		{ ATA_CMD_TRUSTED_RCV,		"TRUSTED RECEIVE" },
2366 		{ ATA_CMD_TRUSTED_RCV_DMA,	"TRUSTED RECEIVE DMA" },
2367 		{ ATA_CMD_TRUSTED_SND,		"TRUSTED SEND" },
2368 		{ ATA_CMD_TRUSTED_SND_DMA,	"TRUSTED SEND DMA" },
2369 		{ ATA_CMD_PMP_READ,		"READ BUFFER" },
2370 		{ ATA_CMD_PMP_READ_DMA,		"READ BUFFER DMA" },
2371 		{ ATA_CMD_PMP_WRITE,		"WRITE BUFFER" },
2372 		{ ATA_CMD_PMP_WRITE_DMA,	"WRITE BUFFER DMA" },
2373 		{ ATA_CMD_CONF_OVERLAY,		"DEVICE CONFIGURATION OVERLAY" },
2374 		{ ATA_CMD_SEC_SET_PASS,		"SECURITY SET PASSWORD" },
2375 		{ ATA_CMD_SEC_UNLOCK,		"SECURITY UNLOCK" },
2376 		{ ATA_CMD_SEC_ERASE_PREP,	"SECURITY ERASE PREPARE" },
2377 		{ ATA_CMD_SEC_ERASE_UNIT,	"SECURITY ERASE UNIT" },
2378 		{ ATA_CMD_SEC_FREEZE_LOCK,	"SECURITY FREEZE LOCK" },
2379 		{ ATA_CMD_SEC_DISABLE_PASS,	"SECURITY DISABLE PASSWORD" },
2380 		{ ATA_CMD_CONFIG_STREAM,	"CONFIGURE STREAM" },
2381 		{ ATA_CMD_SMART,		"SMART" },
2382 		{ ATA_CMD_MEDIA_LOCK,		"DOOR LOCK" },
2383 		{ ATA_CMD_MEDIA_UNLOCK,		"DOOR UNLOCK" },
2384 		{ ATA_CMD_DSM,			"DATA SET MANAGEMENT" },
2385 		{ ATA_CMD_CHK_MED_CRD_TYP,	"CHECK MEDIA CARD TYPE" },
2386 		{ ATA_CMD_CFA_REQ_EXT_ERR,	"CFA REQUEST EXTENDED ERROR" },
2387 		{ ATA_CMD_CFA_WRITE_NE,		"CFA WRITE SECTORS WITHOUT ERASE" },
2388 		{ ATA_CMD_CFA_TRANS_SECT,	"CFA TRANSLATE SECTOR" },
2389 		{ ATA_CMD_CFA_ERASE,		"CFA ERASE SECTORS" },
2390 		{ ATA_CMD_CFA_WRITE_MULT_NE,	"CFA WRITE MULTIPLE WITHOUT ERASE" },
2391 		{ ATA_CMD_REQ_SENSE_DATA,	"REQUEST SENSE DATA EXT" },
2392 		{ ATA_CMD_SANITIZE_DEVICE,	"SANITIZE DEVICE" },
2393 		{ ATA_CMD_READ_LONG,		"READ LONG (with retries)" },
2394 		{ ATA_CMD_READ_LONG_ONCE,	"READ LONG (without retries)" },
2395 		{ ATA_CMD_WRITE_LONG,		"WRITE LONG (with retries)" },
2396 		{ ATA_CMD_WRITE_LONG_ONCE,	"WRITE LONG (without retries)" },
2397 		{ ATA_CMD_RESTORE,		"RECALIBRATE" },
2398 		{ 0,				NULL } /* terminate list */
2399 	};
2400 
2401 	unsigned int i;
2402 	for (i = 0; cmd_descr[i].text; i++)
2403 		if (cmd_descr[i].command == command)
2404 			return cmd_descr[i].text;
2405 #endif
2406 
2407 	return NULL;
2408 }
2409 EXPORT_SYMBOL_GPL(ata_get_cmd_descript);
2410 
2411 /**
2412  *	ata_eh_link_report - report error handling to user
2413  *	@link: ATA link EH is going on
2414  *
2415  *	Report EH to user.
2416  *
2417  *	LOCKING:
2418  *	None.
2419  */
2420 static void ata_eh_link_report(struct ata_link *link)
2421 {
2422 	struct ata_port *ap = link->ap;
2423 	struct ata_eh_context *ehc = &link->eh_context;
2424 	const char *frozen, *desc;
2425 	char tries_buf[6] = "";
2426 	int tag, nr_failed = 0;
2427 
2428 	if (ehc->i.flags & ATA_EHI_QUIET)
2429 		return;
2430 
2431 	desc = NULL;
2432 	if (ehc->i.desc[0] != '\0')
2433 		desc = ehc->i.desc;
2434 
2435 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
2436 		struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
2437 
2438 		if (!(qc->flags & ATA_QCFLAG_FAILED) ||
2439 		    ata_dev_phys_link(qc->dev) != link ||
2440 		    ((qc->flags & ATA_QCFLAG_QUIET) &&
2441 		     qc->err_mask == AC_ERR_DEV))
2442 			continue;
2443 		if (qc->flags & ATA_QCFLAG_SENSE_VALID && !qc->err_mask)
2444 			continue;
2445 
2446 		nr_failed++;
2447 	}
2448 
2449 	if (!nr_failed && !ehc->i.err_mask)
2450 		return;
2451 
2452 	frozen = "";
2453 	if (ap->pflags & ATA_PFLAG_FROZEN)
2454 		frozen = " frozen";
2455 
2456 	if (ap->eh_tries < ATA_EH_MAX_TRIES)
2457 		snprintf(tries_buf, sizeof(tries_buf), " t%d",
2458 			 ap->eh_tries);
2459 
2460 	if (ehc->i.dev) {
2461 		ata_dev_err(ehc->i.dev, "exception Emask 0x%x "
2462 			    "SAct 0x%x SErr 0x%x action 0x%x%s%s\n",
2463 			    ehc->i.err_mask, link->sactive, ehc->i.serror,
2464 			    ehc->i.action, frozen, tries_buf);
2465 		if (desc)
2466 			ata_dev_err(ehc->i.dev, "%s\n", desc);
2467 	} else {
2468 		ata_link_err(link, "exception Emask 0x%x "
2469 			     "SAct 0x%x SErr 0x%x action 0x%x%s%s\n",
2470 			     ehc->i.err_mask, link->sactive, ehc->i.serror,
2471 			     ehc->i.action, frozen, tries_buf);
2472 		if (desc)
2473 			ata_link_err(link, "%s\n", desc);
2474 	}
2475 
2476 #ifdef CONFIG_ATA_VERBOSE_ERROR
2477 	if (ehc->i.serror)
2478 		ata_link_err(link,
2479 		  "SError: { %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s}\n",
2480 		  ehc->i.serror & SERR_DATA_RECOVERED ? "RecovData " : "",
2481 		  ehc->i.serror & SERR_COMM_RECOVERED ? "RecovComm " : "",
2482 		  ehc->i.serror & SERR_DATA ? "UnrecovData " : "",
2483 		  ehc->i.serror & SERR_PERSISTENT ? "Persist " : "",
2484 		  ehc->i.serror & SERR_PROTOCOL ? "Proto " : "",
2485 		  ehc->i.serror & SERR_INTERNAL ? "HostInt " : "",
2486 		  ehc->i.serror & SERR_PHYRDY_CHG ? "PHYRdyChg " : "",
2487 		  ehc->i.serror & SERR_PHY_INT_ERR ? "PHYInt " : "",
2488 		  ehc->i.serror & SERR_COMM_WAKE ? "CommWake " : "",
2489 		  ehc->i.serror & SERR_10B_8B_ERR ? "10B8B " : "",
2490 		  ehc->i.serror & SERR_DISPARITY ? "Dispar " : "",
2491 		  ehc->i.serror & SERR_CRC ? "BadCRC " : "",
2492 		  ehc->i.serror & SERR_HANDSHAKE ? "Handshk " : "",
2493 		  ehc->i.serror & SERR_LINK_SEQ_ERR ? "LinkSeq " : "",
2494 		  ehc->i.serror & SERR_TRANS_ST_ERROR ? "TrStaTrns " : "",
2495 		  ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecFIS " : "",
2496 		  ehc->i.serror & SERR_DEV_XCHG ? "DevExch " : "");
2497 #endif
2498 
2499 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
2500 		struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
2501 		struct ata_taskfile *cmd = &qc->tf, *res = &qc->result_tf;
2502 		char data_buf[20] = "";
2503 		char cdb_buf[70] = "";
2504 
2505 		if (!(qc->flags & ATA_QCFLAG_FAILED) ||
2506 		    ata_dev_phys_link(qc->dev) != link || !qc->err_mask)
2507 			continue;
2508 
2509 		if (qc->dma_dir != DMA_NONE) {
2510 			static const char *dma_str[] = {
2511 				[DMA_BIDIRECTIONAL]	= "bidi",
2512 				[DMA_TO_DEVICE]		= "out",
2513 				[DMA_FROM_DEVICE]	= "in",
2514 			};
2515 			static const char *prot_str[] = {
2516 				[ATA_PROT_PIO]		= "pio",
2517 				[ATA_PROT_DMA]		= "dma",
2518 				[ATA_PROT_NCQ]		= "ncq",
2519 				[ATAPI_PROT_PIO]	= "pio",
2520 				[ATAPI_PROT_DMA]	= "dma",
2521 			};
2522 
2523 			snprintf(data_buf, sizeof(data_buf), " %s %u %s",
2524 				 prot_str[qc->tf.protocol], qc->nbytes,
2525 				 dma_str[qc->dma_dir]);
2526 		}
2527 
2528 		if (ata_is_atapi(qc->tf.protocol)) {
2529 			const u8 *cdb = qc->cdb;
2530 			size_t cdb_len = qc->dev->cdb_len;
2531 
2532 			if (qc->scsicmd) {
2533 				cdb = qc->scsicmd->cmnd;
2534 				cdb_len = qc->scsicmd->cmd_len;
2535 			}
2536 			__scsi_format_command(cdb_buf, sizeof(cdb_buf),
2537 					      cdb, cdb_len);
2538 		} else {
2539 			const char *descr = ata_get_cmd_descript(cmd->command);
2540 			if (descr)
2541 				ata_dev_err(qc->dev, "failed command: %s\n",
2542 					    descr);
2543 		}
2544 
2545 		ata_dev_err(qc->dev,
2546 			"cmd %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
2547 			"tag %d%s\n         %s"
2548 			"res %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
2549 			"Emask 0x%x (%s)%s\n",
2550 			cmd->command, cmd->feature, cmd->nsect,
2551 			cmd->lbal, cmd->lbam, cmd->lbah,
2552 			cmd->hob_feature, cmd->hob_nsect,
2553 			cmd->hob_lbal, cmd->hob_lbam, cmd->hob_lbah,
2554 			cmd->device, qc->tag, data_buf, cdb_buf,
2555 			res->command, res->feature, res->nsect,
2556 			res->lbal, res->lbam, res->lbah,
2557 			res->hob_feature, res->hob_nsect,
2558 			res->hob_lbal, res->hob_lbam, res->hob_lbah,
2559 			res->device, qc->err_mask, ata_err_string(qc->err_mask),
2560 			qc->err_mask & AC_ERR_NCQ ? " <F>" : "");
2561 
2562 #ifdef CONFIG_ATA_VERBOSE_ERROR
2563 		if (res->command & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ |
2564 				    ATA_ERR)) {
2565 			if (res->command & ATA_BUSY)
2566 				ata_dev_err(qc->dev, "status: { Busy }\n");
2567 			else
2568 				ata_dev_err(qc->dev, "status: { %s%s%s%s}\n",
2569 				  res->command & ATA_DRDY ? "DRDY " : "",
2570 				  res->command & ATA_DF ? "DF " : "",
2571 				  res->command & ATA_DRQ ? "DRQ " : "",
2572 				  res->command & ATA_ERR ? "ERR " : "");
2573 		}
2574 
2575 		if (cmd->command != ATA_CMD_PACKET &&
2576 		    (res->feature & (ATA_ICRC | ATA_UNC | ATA_AMNF |
2577 				     ATA_IDNF | ATA_ABORTED)))
2578 			ata_dev_err(qc->dev, "error: { %s%s%s%s%s}\n",
2579 			  res->feature & ATA_ICRC ? "ICRC " : "",
2580 			  res->feature & ATA_UNC ? "UNC " : "",
2581 			  res->feature & ATA_AMNF ? "AMNF " : "",
2582 			  res->feature & ATA_IDNF ? "IDNF " : "",
2583 			  res->feature & ATA_ABORTED ? "ABRT " : "");
2584 #endif
2585 	}
2586 }
2587 
2588 /**
2589  *	ata_eh_report - report error handling to user
2590  *	@ap: ATA port to report EH about
2591  *
2592  *	Report EH to user.
2593  *
2594  *	LOCKING:
2595  *	None.
2596  */
2597 void ata_eh_report(struct ata_port *ap)
2598 {
2599 	struct ata_link *link;
2600 
2601 	ata_for_each_link(link, ap, HOST_FIRST)
2602 		ata_eh_link_report(link);
2603 }
2604 
2605 static int ata_do_reset(struct ata_link *link, ata_reset_fn_t reset,
2606 			unsigned int *classes, unsigned long deadline,
2607 			bool clear_classes)
2608 {
2609 	struct ata_device *dev;
2610 
2611 	if (clear_classes)
2612 		ata_for_each_dev(dev, link, ALL)
2613 			classes[dev->devno] = ATA_DEV_UNKNOWN;
2614 
2615 	return reset(link, classes, deadline);
2616 }
2617 
2618 static int ata_eh_followup_srst_needed(struct ata_link *link, int rc)
2619 {
2620 	if ((link->flags & ATA_LFLAG_NO_SRST) || ata_link_offline(link))
2621 		return 0;
2622 	if (rc == -EAGAIN)
2623 		return 1;
2624 	if (sata_pmp_supported(link->ap) && ata_is_host_link(link))
2625 		return 1;
2626 	return 0;
2627 }
2628 
2629 int ata_eh_reset(struct ata_link *link, int classify,
2630 		 ata_prereset_fn_t prereset, ata_reset_fn_t softreset,
2631 		 ata_reset_fn_t hardreset, ata_postreset_fn_t postreset)
2632 {
2633 	struct ata_port *ap = link->ap;
2634 	struct ata_link *slave = ap->slave_link;
2635 	struct ata_eh_context *ehc = &link->eh_context;
2636 	struct ata_eh_context *sehc = slave ? &slave->eh_context : NULL;
2637 	unsigned int *classes = ehc->classes;
2638 	unsigned int lflags = link->flags;
2639 	int verbose = !(ehc->i.flags & ATA_EHI_QUIET);
2640 	int max_tries = 0, try = 0;
2641 	struct ata_link *failed_link;
2642 	struct ata_device *dev;
2643 	unsigned long deadline, now;
2644 	ata_reset_fn_t reset;
2645 	unsigned long flags;
2646 	u32 sstatus;
2647 	int nr_unknown, rc;
2648 
2649 	/*
2650 	 * Prepare to reset
2651 	 */
2652 	while (ata_eh_reset_timeouts[max_tries] != ULONG_MAX)
2653 		max_tries++;
2654 	if (link->flags & ATA_LFLAG_RST_ONCE)
2655 		max_tries = 1;
2656 	if (link->flags & ATA_LFLAG_NO_HRST)
2657 		hardreset = NULL;
2658 	if (link->flags & ATA_LFLAG_NO_SRST)
2659 		softreset = NULL;
2660 
2661 	/* make sure each reset attempt is at least COOL_DOWN apart */
2662 	if (ehc->i.flags & ATA_EHI_DID_RESET) {
2663 		now = jiffies;
2664 		WARN_ON(time_after(ehc->last_reset, now));
2665 		deadline = ata_deadline(ehc->last_reset,
2666 					ATA_EH_RESET_COOL_DOWN);
2667 		if (time_before(now, deadline))
2668 			schedule_timeout_uninterruptible(deadline - now);
2669 	}
2670 
2671 	spin_lock_irqsave(ap->lock, flags);
2672 	ap->pflags |= ATA_PFLAG_RESETTING;
2673 	spin_unlock_irqrestore(ap->lock, flags);
2674 
2675 	ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
2676 
2677 	ata_for_each_dev(dev, link, ALL) {
2678 		/* If we issue an SRST then an ATA drive (not ATAPI)
2679 		 * may change configuration and be in PIO0 timing. If
2680 		 * we do a hard reset (or are coming from power on)
2681 		 * this is true for ATA or ATAPI. Until we've set a
2682 		 * suitable controller mode we should not touch the
2683 		 * bus as we may be talking too fast.
2684 		 */
2685 		dev->pio_mode = XFER_PIO_0;
2686 		dev->dma_mode = 0xff;
2687 
2688 		/* If the controller has a pio mode setup function
2689 		 * then use it to set the chipset to rights. Don't
2690 		 * touch the DMA setup as that will be dealt with when
2691 		 * configuring devices.
2692 		 */
2693 		if (ap->ops->set_piomode)
2694 			ap->ops->set_piomode(ap, dev);
2695 	}
2696 
2697 	/* prefer hardreset */
2698 	reset = NULL;
2699 	ehc->i.action &= ~ATA_EH_RESET;
2700 	if (hardreset) {
2701 		reset = hardreset;
2702 		ehc->i.action |= ATA_EH_HARDRESET;
2703 	} else if (softreset) {
2704 		reset = softreset;
2705 		ehc->i.action |= ATA_EH_SOFTRESET;
2706 	}
2707 
2708 	if (prereset) {
2709 		unsigned long deadline = ata_deadline(jiffies,
2710 						      ATA_EH_PRERESET_TIMEOUT);
2711 
2712 		if (slave) {
2713 			sehc->i.action &= ~ATA_EH_RESET;
2714 			sehc->i.action |= ehc->i.action;
2715 		}
2716 
2717 		rc = prereset(link, deadline);
2718 
2719 		/* If present, do prereset on slave link too.  Reset
2720 		 * is skipped iff both master and slave links report
2721 		 * -ENOENT or clear ATA_EH_RESET.
2722 		 */
2723 		if (slave && (rc == 0 || rc == -ENOENT)) {
2724 			int tmp;
2725 
2726 			tmp = prereset(slave, deadline);
2727 			if (tmp != -ENOENT)
2728 				rc = tmp;
2729 
2730 			ehc->i.action |= sehc->i.action;
2731 		}
2732 
2733 		if (rc) {
2734 			if (rc == -ENOENT) {
2735 				ata_link_dbg(link, "port disabled--ignoring\n");
2736 				ehc->i.action &= ~ATA_EH_RESET;
2737 
2738 				ata_for_each_dev(dev, link, ALL)
2739 					classes[dev->devno] = ATA_DEV_NONE;
2740 
2741 				rc = 0;
2742 			} else
2743 				ata_link_err(link,
2744 					     "prereset failed (errno=%d)\n",
2745 					     rc);
2746 			goto out;
2747 		}
2748 
2749 		/* prereset() might have cleared ATA_EH_RESET.  If so,
2750 		 * bang classes, thaw and return.
2751 		 */
2752 		if (reset && !(ehc->i.action & ATA_EH_RESET)) {
2753 			ata_for_each_dev(dev, link, ALL)
2754 				classes[dev->devno] = ATA_DEV_NONE;
2755 			if ((ap->pflags & ATA_PFLAG_FROZEN) &&
2756 			    ata_is_host_link(link))
2757 				ata_eh_thaw_port(ap);
2758 			rc = 0;
2759 			goto out;
2760 		}
2761 	}
2762 
2763  retry:
2764 	/*
2765 	 * Perform reset
2766 	 */
2767 	if (ata_is_host_link(link))
2768 		ata_eh_freeze_port(ap);
2769 
2770 	deadline = ata_deadline(jiffies, ata_eh_reset_timeouts[try++]);
2771 
2772 	if (reset) {
2773 		if (verbose)
2774 			ata_link_info(link, "%s resetting link\n",
2775 				      reset == softreset ? "soft" : "hard");
2776 
2777 		/* mark that this EH session started with reset */
2778 		ehc->last_reset = jiffies;
2779 		if (reset == hardreset)
2780 			ehc->i.flags |= ATA_EHI_DID_HARDRESET;
2781 		else
2782 			ehc->i.flags |= ATA_EHI_DID_SOFTRESET;
2783 
2784 		rc = ata_do_reset(link, reset, classes, deadline, true);
2785 		if (rc && rc != -EAGAIN) {
2786 			failed_link = link;
2787 			goto fail;
2788 		}
2789 
2790 		/* hardreset slave link if existent */
2791 		if (slave && reset == hardreset) {
2792 			int tmp;
2793 
2794 			if (verbose)
2795 				ata_link_info(slave, "hard resetting link\n");
2796 
2797 			ata_eh_about_to_do(slave, NULL, ATA_EH_RESET);
2798 			tmp = ata_do_reset(slave, reset, classes, deadline,
2799 					   false);
2800 			switch (tmp) {
2801 			case -EAGAIN:
2802 				rc = -EAGAIN;
2803 			case 0:
2804 				break;
2805 			default:
2806 				failed_link = slave;
2807 				rc = tmp;
2808 				goto fail;
2809 			}
2810 		}
2811 
2812 		/* perform follow-up SRST if necessary */
2813 		if (reset == hardreset &&
2814 		    ata_eh_followup_srst_needed(link, rc)) {
2815 			reset = softreset;
2816 
2817 			if (!reset) {
2818 				ata_link_err(link,
2819 	     "follow-up softreset required but no softreset available\n");
2820 				failed_link = link;
2821 				rc = -EINVAL;
2822 				goto fail;
2823 			}
2824 
2825 			ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
2826 			rc = ata_do_reset(link, reset, classes, deadline, true);
2827 			if (rc) {
2828 				failed_link = link;
2829 				goto fail;
2830 			}
2831 		}
2832 	} else {
2833 		if (verbose)
2834 			ata_link_info(link,
2835 	"no reset method available, skipping reset\n");
2836 		if (!(lflags & ATA_LFLAG_ASSUME_CLASS))
2837 			lflags |= ATA_LFLAG_ASSUME_ATA;
2838 	}
2839 
2840 	/*
2841 	 * Post-reset processing
2842 	 */
2843 	ata_for_each_dev(dev, link, ALL) {
2844 		/* After the reset, the device state is PIO 0 and the
2845 		 * controller state is undefined.  Reset also wakes up
2846 		 * drives from sleeping mode.
2847 		 */
2848 		dev->pio_mode = XFER_PIO_0;
2849 		dev->flags &= ~ATA_DFLAG_SLEEPING;
2850 
2851 		if (ata_phys_link_offline(ata_dev_phys_link(dev)))
2852 			continue;
2853 
2854 		/* apply class override */
2855 		if (lflags & ATA_LFLAG_ASSUME_ATA)
2856 			classes[dev->devno] = ATA_DEV_ATA;
2857 		else if (lflags & ATA_LFLAG_ASSUME_SEMB)
2858 			classes[dev->devno] = ATA_DEV_SEMB_UNSUP;
2859 	}
2860 
2861 	/* record current link speed */
2862 	if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0)
2863 		link->sata_spd = (sstatus >> 4) & 0xf;
2864 	if (slave && sata_scr_read(slave, SCR_STATUS, &sstatus) == 0)
2865 		slave->sata_spd = (sstatus >> 4) & 0xf;
2866 
2867 	/* thaw the port */
2868 	if (ata_is_host_link(link))
2869 		ata_eh_thaw_port(ap);
2870 
2871 	/* postreset() should clear hardware SError.  Although SError
2872 	 * is cleared during link resume, clearing SError here is
2873 	 * necessary as some PHYs raise hotplug events after SRST.
2874 	 * This introduces race condition where hotplug occurs between
2875 	 * reset and here.  This race is mediated by cross checking
2876 	 * link onlineness and classification result later.
2877 	 */
2878 	if (postreset) {
2879 		postreset(link, classes);
2880 		if (slave)
2881 			postreset(slave, classes);
2882 	}
2883 
2884 	/*
2885 	 * Some controllers can't be frozen very well and may set spurious
2886 	 * error conditions during reset.  Clear accumulated error
2887 	 * information and re-thaw the port if frozen.  As reset is the
2888 	 * final recovery action and we cross check link onlineness against
2889 	 * device classification later, no hotplug event is lost by this.
2890 	 */
2891 	spin_lock_irqsave(link->ap->lock, flags);
2892 	memset(&link->eh_info, 0, sizeof(link->eh_info));
2893 	if (slave)
2894 		memset(&slave->eh_info, 0, sizeof(link->eh_info));
2895 	ap->pflags &= ~ATA_PFLAG_EH_PENDING;
2896 	spin_unlock_irqrestore(link->ap->lock, flags);
2897 
2898 	if (ap->pflags & ATA_PFLAG_FROZEN)
2899 		ata_eh_thaw_port(ap);
2900 
2901 	/*
2902 	 * Make sure onlineness and classification result correspond.
2903 	 * Hotplug could have happened during reset and some
2904 	 * controllers fail to wait while a drive is spinning up after
2905 	 * being hotplugged causing misdetection.  By cross checking
2906 	 * link on/offlineness and classification result, those
2907 	 * conditions can be reliably detected and retried.
2908 	 */
2909 	nr_unknown = 0;
2910 	ata_for_each_dev(dev, link, ALL) {
2911 		if (ata_phys_link_online(ata_dev_phys_link(dev))) {
2912 			if (classes[dev->devno] == ATA_DEV_UNKNOWN) {
2913 				ata_dev_dbg(dev, "link online but device misclassified\n");
2914 				classes[dev->devno] = ATA_DEV_NONE;
2915 				nr_unknown++;
2916 			}
2917 		} else if (ata_phys_link_offline(ata_dev_phys_link(dev))) {
2918 			if (ata_class_enabled(classes[dev->devno]))
2919 				ata_dev_dbg(dev,
2920 					    "link offline, clearing class %d to NONE\n",
2921 					    classes[dev->devno]);
2922 			classes[dev->devno] = ATA_DEV_NONE;
2923 		} else if (classes[dev->devno] == ATA_DEV_UNKNOWN) {
2924 			ata_dev_dbg(dev,
2925 				    "link status unknown, clearing UNKNOWN to NONE\n");
2926 			classes[dev->devno] = ATA_DEV_NONE;
2927 		}
2928 	}
2929 
2930 	if (classify && nr_unknown) {
2931 		if (try < max_tries) {
2932 			ata_link_warn(link,
2933 				      "link online but %d devices misclassified, retrying\n",
2934 				      nr_unknown);
2935 			failed_link = link;
2936 			rc = -EAGAIN;
2937 			goto fail;
2938 		}
2939 		ata_link_warn(link,
2940 			      "link online but %d devices misclassified, "
2941 			      "device detection might fail\n", nr_unknown);
2942 	}
2943 
2944 	/* reset successful, schedule revalidation */
2945 	ata_eh_done(link, NULL, ATA_EH_RESET);
2946 	if (slave)
2947 		ata_eh_done(slave, NULL, ATA_EH_RESET);
2948 	ehc->last_reset = jiffies;		/* update to completion time */
2949 	ehc->i.action |= ATA_EH_REVALIDATE;
2950 	link->lpm_policy = ATA_LPM_UNKNOWN;	/* reset LPM state */
2951 
2952 	rc = 0;
2953  out:
2954 	/* clear hotplug flag */
2955 	ehc->i.flags &= ~ATA_EHI_HOTPLUGGED;
2956 	if (slave)
2957 		sehc->i.flags &= ~ATA_EHI_HOTPLUGGED;
2958 
2959 	spin_lock_irqsave(ap->lock, flags);
2960 	ap->pflags &= ~ATA_PFLAG_RESETTING;
2961 	spin_unlock_irqrestore(ap->lock, flags);
2962 
2963 	return rc;
2964 
2965  fail:
2966 	/* if SCR isn't accessible on a fan-out port, PMP needs to be reset */
2967 	if (!ata_is_host_link(link) &&
2968 	    sata_scr_read(link, SCR_STATUS, &sstatus))
2969 		rc = -ERESTART;
2970 
2971 	if (try >= max_tries) {
2972 		/*
2973 		 * Thaw host port even if reset failed, so that the port
2974 		 * can be retried on the next phy event.  This risks
2975 		 * repeated EH runs but seems to be a better tradeoff than
2976 		 * shutting down a port after a botched hotplug attempt.
2977 		 */
2978 		if (ata_is_host_link(link))
2979 			ata_eh_thaw_port(ap);
2980 		goto out;
2981 	}
2982 
2983 	now = jiffies;
2984 	if (time_before(now, deadline)) {
2985 		unsigned long delta = deadline - now;
2986 
2987 		ata_link_warn(failed_link,
2988 			"reset failed (errno=%d), retrying in %u secs\n",
2989 			rc, DIV_ROUND_UP(jiffies_to_msecs(delta), 1000));
2990 
2991 		ata_eh_release(ap);
2992 		while (delta)
2993 			delta = schedule_timeout_uninterruptible(delta);
2994 		ata_eh_acquire(ap);
2995 	}
2996 
2997 	/*
2998 	 * While disks spinup behind PMP, some controllers fail sending SRST.
2999 	 * They need to be reset - as well as the PMP - before retrying.
3000 	 */
3001 	if (rc == -ERESTART) {
3002 		if (ata_is_host_link(link))
3003 			ata_eh_thaw_port(ap);
3004 		goto out;
3005 	}
3006 
3007 	if (try == max_tries - 1) {
3008 		sata_down_spd_limit(link, 0);
3009 		if (slave)
3010 			sata_down_spd_limit(slave, 0);
3011 	} else if (rc == -EPIPE)
3012 		sata_down_spd_limit(failed_link, 0);
3013 
3014 	if (hardreset)
3015 		reset = hardreset;
3016 	goto retry;
3017 }
3018 
3019 static inline void ata_eh_pull_park_action(struct ata_port *ap)
3020 {
3021 	struct ata_link *link;
3022 	struct ata_device *dev;
3023 	unsigned long flags;
3024 
3025 	/*
3026 	 * This function can be thought of as an extended version of
3027 	 * ata_eh_about_to_do() specially crafted to accommodate the
3028 	 * requirements of ATA_EH_PARK handling. Since the EH thread
3029 	 * does not leave the do {} while () loop in ata_eh_recover as
3030 	 * long as the timeout for a park request to *one* device on
3031 	 * the port has not expired, and since we still want to pick
3032 	 * up park requests to other devices on the same port or
3033 	 * timeout updates for the same device, we have to pull
3034 	 * ATA_EH_PARK actions from eh_info into eh_context.i
3035 	 * ourselves at the beginning of each pass over the loop.
3036 	 *
3037 	 * Additionally, all write accesses to &ap->park_req_pending
3038 	 * through reinit_completion() (see below) or complete_all()
3039 	 * (see ata_scsi_park_store()) are protected by the host lock.
3040 	 * As a result we have that park_req_pending.done is zero on
3041 	 * exit from this function, i.e. when ATA_EH_PARK actions for
3042 	 * *all* devices on port ap have been pulled into the
3043 	 * respective eh_context structs. If, and only if,
3044 	 * park_req_pending.done is non-zero by the time we reach
3045 	 * wait_for_completion_timeout(), another ATA_EH_PARK action
3046 	 * has been scheduled for at least one of the devices on port
3047 	 * ap and we have to cycle over the do {} while () loop in
3048 	 * ata_eh_recover() again.
3049 	 */
3050 
3051 	spin_lock_irqsave(ap->lock, flags);
3052 	reinit_completion(&ap->park_req_pending);
3053 	ata_for_each_link(link, ap, EDGE) {
3054 		ata_for_each_dev(dev, link, ALL) {
3055 			struct ata_eh_info *ehi = &link->eh_info;
3056 
3057 			link->eh_context.i.dev_action[dev->devno] |=
3058 				ehi->dev_action[dev->devno] & ATA_EH_PARK;
3059 			ata_eh_clear_action(link, dev, ehi, ATA_EH_PARK);
3060 		}
3061 	}
3062 	spin_unlock_irqrestore(ap->lock, flags);
3063 }
3064 
3065 static void ata_eh_park_issue_cmd(struct ata_device *dev, int park)
3066 {
3067 	struct ata_eh_context *ehc = &dev->link->eh_context;
3068 	struct ata_taskfile tf;
3069 	unsigned int err_mask;
3070 
3071 	ata_tf_init(dev, &tf);
3072 	if (park) {
3073 		ehc->unloaded_mask |= 1 << dev->devno;
3074 		tf.command = ATA_CMD_IDLEIMMEDIATE;
3075 		tf.feature = 0x44;
3076 		tf.lbal = 0x4c;
3077 		tf.lbam = 0x4e;
3078 		tf.lbah = 0x55;
3079 	} else {
3080 		ehc->unloaded_mask &= ~(1 << dev->devno);
3081 		tf.command = ATA_CMD_CHK_POWER;
3082 	}
3083 
3084 	tf.flags |= ATA_TFLAG_DEVICE | ATA_TFLAG_ISADDR;
3085 	tf.protocol |= ATA_PROT_NODATA;
3086 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0);
3087 	if (park && (err_mask || tf.lbal != 0xc4)) {
3088 		ata_dev_err(dev, "head unload failed!\n");
3089 		ehc->unloaded_mask &= ~(1 << dev->devno);
3090 	}
3091 }
3092 
3093 static int ata_eh_revalidate_and_attach(struct ata_link *link,
3094 					struct ata_device **r_failed_dev)
3095 {
3096 	struct ata_port *ap = link->ap;
3097 	struct ata_eh_context *ehc = &link->eh_context;
3098 	struct ata_device *dev;
3099 	unsigned int new_mask = 0;
3100 	unsigned long flags;
3101 	int rc = 0;
3102 
3103 	DPRINTK("ENTER\n");
3104 
3105 	/* For PATA drive side cable detection to work, IDENTIFY must
3106 	 * be done backwards such that PDIAG- is released by the slave
3107 	 * device before the master device is identified.
3108 	 */
3109 	ata_for_each_dev(dev, link, ALL_REVERSE) {
3110 		unsigned int action = ata_eh_dev_action(dev);
3111 		unsigned int readid_flags = 0;
3112 
3113 		if (ehc->i.flags & ATA_EHI_DID_RESET)
3114 			readid_flags |= ATA_READID_POSTRESET;
3115 
3116 		if ((action & ATA_EH_REVALIDATE) && ata_dev_enabled(dev)) {
3117 			WARN_ON(dev->class == ATA_DEV_PMP);
3118 
3119 			if (ata_phys_link_offline(ata_dev_phys_link(dev))) {
3120 				rc = -EIO;
3121 				goto err;
3122 			}
3123 
3124 			ata_eh_about_to_do(link, dev, ATA_EH_REVALIDATE);
3125 			rc = ata_dev_revalidate(dev, ehc->classes[dev->devno],
3126 						readid_flags);
3127 			if (rc)
3128 				goto err;
3129 
3130 			ata_eh_done(link, dev, ATA_EH_REVALIDATE);
3131 
3132 			/* Configuration may have changed, reconfigure
3133 			 * transfer mode.
3134 			 */
3135 			ehc->i.flags |= ATA_EHI_SETMODE;
3136 
3137 			/* schedule the scsi_rescan_device() here */
3138 			schedule_work(&(ap->scsi_rescan_task));
3139 		} else if (dev->class == ATA_DEV_UNKNOWN &&
3140 			   ehc->tries[dev->devno] &&
3141 			   ata_class_enabled(ehc->classes[dev->devno])) {
3142 			/* Temporarily set dev->class, it will be
3143 			 * permanently set once all configurations are
3144 			 * complete.  This is necessary because new
3145 			 * device configuration is done in two
3146 			 * separate loops.
3147 			 */
3148 			dev->class = ehc->classes[dev->devno];
3149 
3150 			if (dev->class == ATA_DEV_PMP)
3151 				rc = sata_pmp_attach(dev);
3152 			else
3153 				rc = ata_dev_read_id(dev, &dev->class,
3154 						     readid_flags, dev->id);
3155 
3156 			/* read_id might have changed class, store and reset */
3157 			ehc->classes[dev->devno] = dev->class;
3158 			dev->class = ATA_DEV_UNKNOWN;
3159 
3160 			switch (rc) {
3161 			case 0:
3162 				/* clear error info accumulated during probe */
3163 				ata_ering_clear(&dev->ering);
3164 				new_mask |= 1 << dev->devno;
3165 				break;
3166 			case -ENOENT:
3167 				/* IDENTIFY was issued to non-existent
3168 				 * device.  No need to reset.  Just
3169 				 * thaw and ignore the device.
3170 				 */
3171 				ata_eh_thaw_port(ap);
3172 				break;
3173 			default:
3174 				goto err;
3175 			}
3176 		}
3177 	}
3178 
3179 	/* PDIAG- should have been released, ask cable type if post-reset */
3180 	if ((ehc->i.flags & ATA_EHI_DID_RESET) && ata_is_host_link(link)) {
3181 		if (ap->ops->cable_detect)
3182 			ap->cbl = ap->ops->cable_detect(ap);
3183 		ata_force_cbl(ap);
3184 	}
3185 
3186 	/* Configure new devices forward such that user doesn't see
3187 	 * device detection messages backwards.
3188 	 */
3189 	ata_for_each_dev(dev, link, ALL) {
3190 		if (!(new_mask & (1 << dev->devno)))
3191 			continue;
3192 
3193 		dev->class = ehc->classes[dev->devno];
3194 
3195 		if (dev->class == ATA_DEV_PMP)
3196 			continue;
3197 
3198 		ehc->i.flags |= ATA_EHI_PRINTINFO;
3199 		rc = ata_dev_configure(dev);
3200 		ehc->i.flags &= ~ATA_EHI_PRINTINFO;
3201 		if (rc) {
3202 			dev->class = ATA_DEV_UNKNOWN;
3203 			goto err;
3204 		}
3205 
3206 		spin_lock_irqsave(ap->lock, flags);
3207 		ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG;
3208 		spin_unlock_irqrestore(ap->lock, flags);
3209 
3210 		/* new device discovered, configure xfermode */
3211 		ehc->i.flags |= ATA_EHI_SETMODE;
3212 	}
3213 
3214 	return 0;
3215 
3216  err:
3217 	*r_failed_dev = dev;
3218 	DPRINTK("EXIT rc=%d\n", rc);
3219 	return rc;
3220 }
3221 
3222 /**
3223  *	ata_set_mode - Program timings and issue SET FEATURES - XFER
3224  *	@link: link on which timings will be programmed
3225  *	@r_failed_dev: out parameter for failed device
3226  *
3227  *	Set ATA device disk transfer mode (PIO3, UDMA6, etc.).  If
3228  *	ata_set_mode() fails, pointer to the failing device is
3229  *	returned in @r_failed_dev.
3230  *
3231  *	LOCKING:
3232  *	PCI/etc. bus probe sem.
3233  *
3234  *	RETURNS:
3235  *	0 on success, negative errno otherwise
3236  */
3237 int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
3238 {
3239 	struct ata_port *ap = link->ap;
3240 	struct ata_device *dev;
3241 	int rc;
3242 
3243 	/* if data transfer is verified, clear DUBIOUS_XFER on ering top */
3244 	ata_for_each_dev(dev, link, ENABLED) {
3245 		if (!(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) {
3246 			struct ata_ering_entry *ent;
3247 
3248 			ent = ata_ering_top(&dev->ering);
3249 			if (ent)
3250 				ent->eflags &= ~ATA_EFLAG_DUBIOUS_XFER;
3251 		}
3252 	}
3253 
3254 	/* has private set_mode? */
3255 	if (ap->ops->set_mode)
3256 		rc = ap->ops->set_mode(link, r_failed_dev);
3257 	else
3258 		rc = ata_do_set_mode(link, r_failed_dev);
3259 
3260 	/* if transfer mode has changed, set DUBIOUS_XFER on device */
3261 	ata_for_each_dev(dev, link, ENABLED) {
3262 		struct ata_eh_context *ehc = &link->eh_context;
3263 		u8 saved_xfer_mode = ehc->saved_xfer_mode[dev->devno];
3264 		u8 saved_ncq = !!(ehc->saved_ncq_enabled & (1 << dev->devno));
3265 
3266 		if (dev->xfer_mode != saved_xfer_mode ||
3267 		    ata_ncq_enabled(dev) != saved_ncq)
3268 			dev->flags |= ATA_DFLAG_DUBIOUS_XFER;
3269 	}
3270 
3271 	return rc;
3272 }
3273 
3274 /**
3275  *	atapi_eh_clear_ua - Clear ATAPI UNIT ATTENTION after reset
3276  *	@dev: ATAPI device to clear UA for
3277  *
3278  *	Resets and other operations can make an ATAPI device raise
3279  *	UNIT ATTENTION which causes the next operation to fail.  This
3280  *	function clears UA.
3281  *
3282  *	LOCKING:
3283  *	EH context (may sleep).
3284  *
3285  *	RETURNS:
3286  *	0 on success, -errno on failure.
3287  */
3288 static int atapi_eh_clear_ua(struct ata_device *dev)
3289 {
3290 	int i;
3291 
3292 	for (i = 0; i < ATA_EH_UA_TRIES; i++) {
3293 		u8 *sense_buffer = dev->link->ap->sector_buf;
3294 		u8 sense_key = 0;
3295 		unsigned int err_mask;
3296 
3297 		err_mask = atapi_eh_tur(dev, &sense_key);
3298 		if (err_mask != 0 && err_mask != AC_ERR_DEV) {
3299 			ata_dev_warn(dev,
3300 				     "TEST_UNIT_READY failed (err_mask=0x%x)\n",
3301 				     err_mask);
3302 			return -EIO;
3303 		}
3304 
3305 		if (!err_mask || sense_key != UNIT_ATTENTION)
3306 			return 0;
3307 
3308 		err_mask = atapi_eh_request_sense(dev, sense_buffer, sense_key);
3309 		if (err_mask) {
3310 			ata_dev_warn(dev, "failed to clear "
3311 				"UNIT ATTENTION (err_mask=0x%x)\n", err_mask);
3312 			return -EIO;
3313 		}
3314 	}
3315 
3316 	ata_dev_warn(dev, "UNIT ATTENTION persists after %d tries\n",
3317 		     ATA_EH_UA_TRIES);
3318 
3319 	return 0;
3320 }
3321 
3322 /**
3323  *	ata_eh_maybe_retry_flush - Retry FLUSH if necessary
3324  *	@dev: ATA device which may need FLUSH retry
3325  *
3326  *	If @dev failed FLUSH, it needs to be reported upper layer
3327  *	immediately as it means that @dev failed to remap and already
3328  *	lost at least a sector and further FLUSH retrials won't make
3329  *	any difference to the lost sector.  However, if FLUSH failed
3330  *	for other reasons, for example transmission error, FLUSH needs
3331  *	to be retried.
3332  *
3333  *	This function determines whether FLUSH failure retry is
3334  *	necessary and performs it if so.
3335  *
3336  *	RETURNS:
3337  *	0 if EH can continue, -errno if EH needs to be repeated.
3338  */
3339 static int ata_eh_maybe_retry_flush(struct ata_device *dev)
3340 {
3341 	struct ata_link *link = dev->link;
3342 	struct ata_port *ap = link->ap;
3343 	struct ata_queued_cmd *qc;
3344 	struct ata_taskfile tf;
3345 	unsigned int err_mask;
3346 	int rc = 0;
3347 
3348 	/* did flush fail for this device? */
3349 	if (!ata_tag_valid(link->active_tag))
3350 		return 0;
3351 
3352 	qc = __ata_qc_from_tag(ap, link->active_tag);
3353 	if (qc->dev != dev || (qc->tf.command != ATA_CMD_FLUSH_EXT &&
3354 			       qc->tf.command != ATA_CMD_FLUSH))
3355 		return 0;
3356 
3357 	/* if the device failed it, it should be reported to upper layers */
3358 	if (qc->err_mask & AC_ERR_DEV)
3359 		return 0;
3360 
3361 	/* flush failed for some other reason, give it another shot */
3362 	ata_tf_init(dev, &tf);
3363 
3364 	tf.command = qc->tf.command;
3365 	tf.flags |= ATA_TFLAG_DEVICE;
3366 	tf.protocol = ATA_PROT_NODATA;
3367 
3368 	ata_dev_warn(dev, "retrying FLUSH 0x%x Emask 0x%x\n",
3369 		       tf.command, qc->err_mask);
3370 
3371 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0);
3372 	if (!err_mask) {
3373 		/*
3374 		 * FLUSH is complete but there's no way to
3375 		 * successfully complete a failed command from EH.
3376 		 * Making sure retry is allowed at least once and
3377 		 * retrying it should do the trick - whatever was in
3378 		 * the cache is already on the platter and this won't
3379 		 * cause infinite loop.
3380 		 */
3381 		qc->scsicmd->allowed = max(qc->scsicmd->allowed, 1);
3382 	} else {
3383 		ata_dev_warn(dev, "FLUSH failed Emask 0x%x\n",
3384 			       err_mask);
3385 		rc = -EIO;
3386 
3387 		/* if device failed it, report it to upper layers */
3388 		if (err_mask & AC_ERR_DEV) {
3389 			qc->err_mask |= AC_ERR_DEV;
3390 			qc->result_tf = tf;
3391 			if (!(ap->pflags & ATA_PFLAG_FROZEN))
3392 				rc = 0;
3393 		}
3394 	}
3395 	return rc;
3396 }
3397 
3398 /**
3399  *	ata_eh_set_lpm - configure SATA interface power management
3400  *	@link: link to configure power management
3401  *	@policy: the link power management policy
3402  *	@r_failed_dev: out parameter for failed device
3403  *
3404  *	Enable SATA Interface power management.  This will enable
3405  *	Device Interface Power Management (DIPM) for min_power
3406  * 	policy, and then call driver specific callbacks for
3407  *	enabling Host Initiated Power management.
3408  *
3409  *	LOCKING:
3410  *	EH context.
3411  *
3412  *	RETURNS:
3413  *	0 on success, -errno on failure.
3414  */
3415 static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
3416 			  struct ata_device **r_failed_dev)
3417 {
3418 	struct ata_port *ap = ata_is_host_link(link) ? link->ap : NULL;
3419 	struct ata_eh_context *ehc = &link->eh_context;
3420 	struct ata_device *dev, *link_dev = NULL, *lpm_dev = NULL;
3421 	enum ata_lpm_policy old_policy = link->lpm_policy;
3422 	bool no_dipm = link->ap->flags & ATA_FLAG_NO_DIPM;
3423 	unsigned int hints = ATA_LPM_EMPTY | ATA_LPM_HIPM;
3424 	unsigned int err_mask;
3425 	int rc;
3426 
3427 	/* if the link or host doesn't do LPM, noop */
3428 	if ((link->flags & ATA_LFLAG_NO_LPM) || (ap && !ap->ops->set_lpm))
3429 		return 0;
3430 
3431 	/*
3432 	 * DIPM is enabled only for MIN_POWER as some devices
3433 	 * misbehave when the host NACKs transition to SLUMBER.  Order
3434 	 * device and link configurations such that the host always
3435 	 * allows DIPM requests.
3436 	 */
3437 	ata_for_each_dev(dev, link, ENABLED) {
3438 		bool hipm = ata_id_has_hipm(dev->id);
3439 		bool dipm = ata_id_has_dipm(dev->id) && !no_dipm;
3440 
3441 		/* find the first enabled and LPM enabled devices */
3442 		if (!link_dev)
3443 			link_dev = dev;
3444 
3445 		if (!lpm_dev && (hipm || dipm))
3446 			lpm_dev = dev;
3447 
3448 		hints &= ~ATA_LPM_EMPTY;
3449 		if (!hipm)
3450 			hints &= ~ATA_LPM_HIPM;
3451 
3452 		/* disable DIPM before changing link config */
3453 		if (policy != ATA_LPM_MIN_POWER && dipm) {
3454 			err_mask = ata_dev_set_feature(dev,
3455 					SETFEATURES_SATA_DISABLE, SATA_DIPM);
3456 			if (err_mask && err_mask != AC_ERR_DEV) {
3457 				ata_dev_warn(dev,
3458 					     "failed to disable DIPM, Emask 0x%x\n",
3459 					     err_mask);
3460 				rc = -EIO;
3461 				goto fail;
3462 			}
3463 		}
3464 	}
3465 
3466 	if (ap) {
3467 		rc = ap->ops->set_lpm(link, policy, hints);
3468 		if (!rc && ap->slave_link)
3469 			rc = ap->ops->set_lpm(ap->slave_link, policy, hints);
3470 	} else
3471 		rc = sata_pmp_set_lpm(link, policy, hints);
3472 
3473 	/*
3474 	 * Attribute link config failure to the first (LPM) enabled
3475 	 * device on the link.
3476 	 */
3477 	if (rc) {
3478 		if (rc == -EOPNOTSUPP) {
3479 			link->flags |= ATA_LFLAG_NO_LPM;
3480 			return 0;
3481 		}
3482 		dev = lpm_dev ? lpm_dev : link_dev;
3483 		goto fail;
3484 	}
3485 
3486 	/*
3487 	 * Low level driver acked the transition.  Issue DIPM command
3488 	 * with the new policy set.
3489 	 */
3490 	link->lpm_policy = policy;
3491 	if (ap && ap->slave_link)
3492 		ap->slave_link->lpm_policy = policy;
3493 
3494 	/* host config updated, enable DIPM if transitioning to MIN_POWER */
3495 	ata_for_each_dev(dev, link, ENABLED) {
3496 		if (policy == ATA_LPM_MIN_POWER && !no_dipm &&
3497 		    ata_id_has_dipm(dev->id)) {
3498 			err_mask = ata_dev_set_feature(dev,
3499 					SETFEATURES_SATA_ENABLE, SATA_DIPM);
3500 			if (err_mask && err_mask != AC_ERR_DEV) {
3501 				ata_dev_warn(dev,
3502 					"failed to enable DIPM, Emask 0x%x\n",
3503 					err_mask);
3504 				rc = -EIO;
3505 				goto fail;
3506 			}
3507 		}
3508 	}
3509 
3510 	link->last_lpm_change = jiffies;
3511 	link->flags |= ATA_LFLAG_CHANGED;
3512 
3513 	return 0;
3514 
3515 fail:
3516 	/* restore the old policy */
3517 	link->lpm_policy = old_policy;
3518 	if (ap && ap->slave_link)
3519 		ap->slave_link->lpm_policy = old_policy;
3520 
3521 	/* if no device or only one more chance is left, disable LPM */
3522 	if (!dev || ehc->tries[dev->devno] <= 2) {
3523 		ata_link_warn(link, "disabling LPM on the link\n");
3524 		link->flags |= ATA_LFLAG_NO_LPM;
3525 	}
3526 	if (r_failed_dev)
3527 		*r_failed_dev = dev;
3528 	return rc;
3529 }
3530 
3531 int ata_link_nr_enabled(struct ata_link *link)
3532 {
3533 	struct ata_device *dev;
3534 	int cnt = 0;
3535 
3536 	ata_for_each_dev(dev, link, ENABLED)
3537 		cnt++;
3538 	return cnt;
3539 }
3540 
3541 static int ata_link_nr_vacant(struct ata_link *link)
3542 {
3543 	struct ata_device *dev;
3544 	int cnt = 0;
3545 
3546 	ata_for_each_dev(dev, link, ALL)
3547 		if (dev->class == ATA_DEV_UNKNOWN)
3548 			cnt++;
3549 	return cnt;
3550 }
3551 
3552 static int ata_eh_skip_recovery(struct ata_link *link)
3553 {
3554 	struct ata_port *ap = link->ap;
3555 	struct ata_eh_context *ehc = &link->eh_context;
3556 	struct ata_device *dev;
3557 
3558 	/* skip disabled links */
3559 	if (link->flags & ATA_LFLAG_DISABLED)
3560 		return 1;
3561 
3562 	/* skip if explicitly requested */
3563 	if (ehc->i.flags & ATA_EHI_NO_RECOVERY)
3564 		return 1;
3565 
3566 	/* thaw frozen port and recover failed devices */
3567 	if ((ap->pflags & ATA_PFLAG_FROZEN) || ata_link_nr_enabled(link))
3568 		return 0;
3569 
3570 	/* reset at least once if reset is requested */
3571 	if ((ehc->i.action & ATA_EH_RESET) &&
3572 	    !(ehc->i.flags & ATA_EHI_DID_RESET))
3573 		return 0;
3574 
3575 	/* skip if class codes for all vacant slots are ATA_DEV_NONE */
3576 	ata_for_each_dev(dev, link, ALL) {
3577 		if (dev->class == ATA_DEV_UNKNOWN &&
3578 		    ehc->classes[dev->devno] != ATA_DEV_NONE)
3579 			return 0;
3580 	}
3581 
3582 	return 1;
3583 }
3584 
3585 static int ata_count_probe_trials_cb(struct ata_ering_entry *ent, void *void_arg)
3586 {
3587 	u64 interval = msecs_to_jiffies(ATA_EH_PROBE_TRIAL_INTERVAL);
3588 	u64 now = get_jiffies_64();
3589 	int *trials = void_arg;
3590 
3591 	if ((ent->eflags & ATA_EFLAG_OLD_ER) ||
3592 	    (ent->timestamp < now - min(now, interval)))
3593 		return -1;
3594 
3595 	(*trials)++;
3596 	return 0;
3597 }
3598 
3599 static int ata_eh_schedule_probe(struct ata_device *dev)
3600 {
3601 	struct ata_eh_context *ehc = &dev->link->eh_context;
3602 	struct ata_link *link = ata_dev_phys_link(dev);
3603 	int trials = 0;
3604 
3605 	if (!(ehc->i.probe_mask & (1 << dev->devno)) ||
3606 	    (ehc->did_probe_mask & (1 << dev->devno)))
3607 		return 0;
3608 
3609 	ata_eh_detach_dev(dev);
3610 	ata_dev_init(dev);
3611 	ehc->did_probe_mask |= (1 << dev->devno);
3612 	ehc->i.action |= ATA_EH_RESET;
3613 	ehc->saved_xfer_mode[dev->devno] = 0;
3614 	ehc->saved_ncq_enabled &= ~(1 << dev->devno);
3615 
3616 	/* the link maybe in a deep sleep, wake it up */
3617 	if (link->lpm_policy > ATA_LPM_MAX_POWER) {
3618 		if (ata_is_host_link(link))
3619 			link->ap->ops->set_lpm(link, ATA_LPM_MAX_POWER,
3620 					       ATA_LPM_EMPTY);
3621 		else
3622 			sata_pmp_set_lpm(link, ATA_LPM_MAX_POWER,
3623 					 ATA_LPM_EMPTY);
3624 	}
3625 
3626 	/* Record and count probe trials on the ering.  The specific
3627 	 * error mask used is irrelevant.  Because a successful device
3628 	 * detection clears the ering, this count accumulates only if
3629 	 * there are consecutive failed probes.
3630 	 *
3631 	 * If the count is equal to or higher than ATA_EH_PROBE_TRIALS
3632 	 * in the last ATA_EH_PROBE_TRIAL_INTERVAL, link speed is
3633 	 * forced to 1.5Gbps.
3634 	 *
3635 	 * This is to work around cases where failed link speed
3636 	 * negotiation results in device misdetection leading to
3637 	 * infinite DEVXCHG or PHRDY CHG events.
3638 	 */
3639 	ata_ering_record(&dev->ering, 0, AC_ERR_OTHER);
3640 	ata_ering_map(&dev->ering, ata_count_probe_trials_cb, &trials);
3641 
3642 	if (trials > ATA_EH_PROBE_TRIALS)
3643 		sata_down_spd_limit(link, 1);
3644 
3645 	return 1;
3646 }
3647 
3648 static int ata_eh_handle_dev_fail(struct ata_device *dev, int err)
3649 {
3650 	struct ata_eh_context *ehc = &dev->link->eh_context;
3651 
3652 	/* -EAGAIN from EH routine indicates retry without prejudice.
3653 	 * The requester is responsible for ensuring forward progress.
3654 	 */
3655 	if (err != -EAGAIN)
3656 		ehc->tries[dev->devno]--;
3657 
3658 	switch (err) {
3659 	case -ENODEV:
3660 		/* device missing or wrong IDENTIFY data, schedule probing */
3661 		ehc->i.probe_mask |= (1 << dev->devno);
3662 	case -EINVAL:
3663 		/* give it just one more chance */
3664 		ehc->tries[dev->devno] = min(ehc->tries[dev->devno], 1);
3665 	case -EIO:
3666 		if (ehc->tries[dev->devno] == 1) {
3667 			/* This is the last chance, better to slow
3668 			 * down than lose it.
3669 			 */
3670 			sata_down_spd_limit(ata_dev_phys_link(dev), 0);
3671 			if (dev->pio_mode > XFER_PIO_0)
3672 				ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
3673 		}
3674 	}
3675 
3676 	if (ata_dev_enabled(dev) && !ehc->tries[dev->devno]) {
3677 		/* disable device if it has used up all its chances */
3678 		ata_dev_disable(dev);
3679 
3680 		/* detach if offline */
3681 		if (ata_phys_link_offline(ata_dev_phys_link(dev)))
3682 			ata_eh_detach_dev(dev);
3683 
3684 		/* schedule probe if necessary */
3685 		if (ata_eh_schedule_probe(dev)) {
3686 			ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
3687 			memset(ehc->cmd_timeout_idx[dev->devno], 0,
3688 			       sizeof(ehc->cmd_timeout_idx[dev->devno]));
3689 		}
3690 
3691 		return 1;
3692 	} else {
3693 		ehc->i.action |= ATA_EH_RESET;
3694 		return 0;
3695 	}
3696 }
3697 
3698 /**
3699  *	ata_eh_recover - recover host port after error
3700  *	@ap: host port to recover
3701  *	@prereset: prereset method (can be NULL)
3702  *	@softreset: softreset method (can be NULL)
3703  *	@hardreset: hardreset method (can be NULL)
3704  *	@postreset: postreset method (can be NULL)
3705  *	@r_failed_link: out parameter for failed link
3706  *
3707  *	This is the alpha and omega, eum and yang, heart and soul of
3708  *	libata exception handling.  On entry, actions required to
3709  *	recover each link and hotplug requests are recorded in the
3710  *	link's eh_context.  This function executes all the operations
3711  *	with appropriate retrials and fallbacks to resurrect failed
3712  *	devices, detach goners and greet newcomers.
3713  *
3714  *	LOCKING:
3715  *	Kernel thread context (may sleep).
3716  *
3717  *	RETURNS:
3718  *	0 on success, -errno on failure.
3719  */
3720 int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
3721 		   ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
3722 		   ata_postreset_fn_t postreset,
3723 		   struct ata_link **r_failed_link)
3724 {
3725 	struct ata_link *link;
3726 	struct ata_device *dev;
3727 	int rc, nr_fails;
3728 	unsigned long flags, deadline;
3729 
3730 	DPRINTK("ENTER\n");
3731 
3732 	/* prep for recovery */
3733 	ata_for_each_link(link, ap, EDGE) {
3734 		struct ata_eh_context *ehc = &link->eh_context;
3735 
3736 		/* re-enable link? */
3737 		if (ehc->i.action & ATA_EH_ENABLE_LINK) {
3738 			ata_eh_about_to_do(link, NULL, ATA_EH_ENABLE_LINK);
3739 			spin_lock_irqsave(ap->lock, flags);
3740 			link->flags &= ~ATA_LFLAG_DISABLED;
3741 			spin_unlock_irqrestore(ap->lock, flags);
3742 			ata_eh_done(link, NULL, ATA_EH_ENABLE_LINK);
3743 		}
3744 
3745 		ata_for_each_dev(dev, link, ALL) {
3746 			if (link->flags & ATA_LFLAG_NO_RETRY)
3747 				ehc->tries[dev->devno] = 1;
3748 			else
3749 				ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
3750 
3751 			/* collect port action mask recorded in dev actions */
3752 			ehc->i.action |= ehc->i.dev_action[dev->devno] &
3753 					 ~ATA_EH_PERDEV_MASK;
3754 			ehc->i.dev_action[dev->devno] &= ATA_EH_PERDEV_MASK;
3755 
3756 			/* process hotplug request */
3757 			if (dev->flags & ATA_DFLAG_DETACH)
3758 				ata_eh_detach_dev(dev);
3759 
3760 			/* schedule probe if necessary */
3761 			if (!ata_dev_enabled(dev))
3762 				ata_eh_schedule_probe(dev);
3763 		}
3764 	}
3765 
3766  retry:
3767 	rc = 0;
3768 
3769 	/* if UNLOADING, finish immediately */
3770 	if (ap->pflags & ATA_PFLAG_UNLOADING)
3771 		goto out;
3772 
3773 	/* prep for EH */
3774 	ata_for_each_link(link, ap, EDGE) {
3775 		struct ata_eh_context *ehc = &link->eh_context;
3776 
3777 		/* skip EH if possible. */
3778 		if (ata_eh_skip_recovery(link))
3779 			ehc->i.action = 0;
3780 
3781 		ata_for_each_dev(dev, link, ALL)
3782 			ehc->classes[dev->devno] = ATA_DEV_UNKNOWN;
3783 	}
3784 
3785 	/* reset */
3786 	ata_for_each_link(link, ap, EDGE) {
3787 		struct ata_eh_context *ehc = &link->eh_context;
3788 
3789 		if (!(ehc->i.action & ATA_EH_RESET))
3790 			continue;
3791 
3792 		rc = ata_eh_reset(link, ata_link_nr_vacant(link),
3793 				  prereset, softreset, hardreset, postreset);
3794 		if (rc) {
3795 			ata_link_err(link, "reset failed, giving up\n");
3796 			goto out;
3797 		}
3798 	}
3799 
3800 	do {
3801 		unsigned long now;
3802 
3803 		/*
3804 		 * clears ATA_EH_PARK in eh_info and resets
3805 		 * ap->park_req_pending
3806 		 */
3807 		ata_eh_pull_park_action(ap);
3808 
3809 		deadline = jiffies;
3810 		ata_for_each_link(link, ap, EDGE) {
3811 			ata_for_each_dev(dev, link, ALL) {
3812 				struct ata_eh_context *ehc = &link->eh_context;
3813 				unsigned long tmp;
3814 
3815 				if (dev->class != ATA_DEV_ATA &&
3816 				    dev->class != ATA_DEV_ZAC)
3817 					continue;
3818 				if (!(ehc->i.dev_action[dev->devno] &
3819 				      ATA_EH_PARK))
3820 					continue;
3821 				tmp = dev->unpark_deadline;
3822 				if (time_before(deadline, tmp))
3823 					deadline = tmp;
3824 				else if (time_before_eq(tmp, jiffies))
3825 					continue;
3826 				if (ehc->unloaded_mask & (1 << dev->devno))
3827 					continue;
3828 
3829 				ata_eh_park_issue_cmd(dev, 1);
3830 			}
3831 		}
3832 
3833 		now = jiffies;
3834 		if (time_before_eq(deadline, now))
3835 			break;
3836 
3837 		ata_eh_release(ap);
3838 		deadline = wait_for_completion_timeout(&ap->park_req_pending,
3839 						       deadline - now);
3840 		ata_eh_acquire(ap);
3841 	} while (deadline);
3842 	ata_for_each_link(link, ap, EDGE) {
3843 		ata_for_each_dev(dev, link, ALL) {
3844 			if (!(link->eh_context.unloaded_mask &
3845 			      (1 << dev->devno)))
3846 				continue;
3847 
3848 			ata_eh_park_issue_cmd(dev, 0);
3849 			ata_eh_done(link, dev, ATA_EH_PARK);
3850 		}
3851 	}
3852 
3853 	/* the rest */
3854 	nr_fails = 0;
3855 	ata_for_each_link(link, ap, PMP_FIRST) {
3856 		struct ata_eh_context *ehc = &link->eh_context;
3857 
3858 		if (sata_pmp_attached(ap) && ata_is_host_link(link))
3859 			goto config_lpm;
3860 
3861 		/* revalidate existing devices and attach new ones */
3862 		rc = ata_eh_revalidate_and_attach(link, &dev);
3863 		if (rc)
3864 			goto rest_fail;
3865 
3866 		/* if PMP got attached, return, pmp EH will take care of it */
3867 		if (link->device->class == ATA_DEV_PMP) {
3868 			ehc->i.action = 0;
3869 			return 0;
3870 		}
3871 
3872 		/* configure transfer mode if necessary */
3873 		if (ehc->i.flags & ATA_EHI_SETMODE) {
3874 			rc = ata_set_mode(link, &dev);
3875 			if (rc)
3876 				goto rest_fail;
3877 			ehc->i.flags &= ~ATA_EHI_SETMODE;
3878 		}
3879 
3880 		/* If reset has been issued, clear UA to avoid
3881 		 * disrupting the current users of the device.
3882 		 */
3883 		if (ehc->i.flags & ATA_EHI_DID_RESET) {
3884 			ata_for_each_dev(dev, link, ALL) {
3885 				if (dev->class != ATA_DEV_ATAPI)
3886 					continue;
3887 				rc = atapi_eh_clear_ua(dev);
3888 				if (rc)
3889 					goto rest_fail;
3890 				if (zpodd_dev_enabled(dev))
3891 					zpodd_post_poweron(dev);
3892 			}
3893 		}
3894 
3895 		/* retry flush if necessary */
3896 		ata_for_each_dev(dev, link, ALL) {
3897 			if (dev->class != ATA_DEV_ATA &&
3898 			    dev->class != ATA_DEV_ZAC)
3899 				continue;
3900 			rc = ata_eh_maybe_retry_flush(dev);
3901 			if (rc)
3902 				goto rest_fail;
3903 		}
3904 
3905 	config_lpm:
3906 		/* configure link power saving */
3907 		if (link->lpm_policy != ap->target_lpm_policy) {
3908 			rc = ata_eh_set_lpm(link, ap->target_lpm_policy, &dev);
3909 			if (rc)
3910 				goto rest_fail;
3911 		}
3912 
3913 		/* this link is okay now */
3914 		ehc->i.flags = 0;
3915 		continue;
3916 
3917 	rest_fail:
3918 		nr_fails++;
3919 		if (dev)
3920 			ata_eh_handle_dev_fail(dev, rc);
3921 
3922 		if (ap->pflags & ATA_PFLAG_FROZEN) {
3923 			/* PMP reset requires working host port.
3924 			 * Can't retry if it's frozen.
3925 			 */
3926 			if (sata_pmp_attached(ap))
3927 				goto out;
3928 			break;
3929 		}
3930 	}
3931 
3932 	if (nr_fails)
3933 		goto retry;
3934 
3935  out:
3936 	if (rc && r_failed_link)
3937 		*r_failed_link = link;
3938 
3939 	DPRINTK("EXIT, rc=%d\n", rc);
3940 	return rc;
3941 }
3942 
3943 /**
3944  *	ata_eh_finish - finish up EH
3945  *	@ap: host port to finish EH for
3946  *
3947  *	Recovery is complete.  Clean up EH states and retry or finish
3948  *	failed qcs.
3949  *
3950  *	LOCKING:
3951  *	None.
3952  */
3953 void ata_eh_finish(struct ata_port *ap)
3954 {
3955 	int tag;
3956 
3957 	/* retry or finish qcs */
3958 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
3959 		struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
3960 
3961 		if (!(qc->flags & ATA_QCFLAG_FAILED))
3962 			continue;
3963 
3964 		if (qc->err_mask) {
3965 			/* FIXME: Once EH migration is complete,
3966 			 * generate sense data in this function,
3967 			 * considering both err_mask and tf.
3968 			 */
3969 			if (qc->flags & ATA_QCFLAG_RETRY)
3970 				ata_eh_qc_retry(qc);
3971 			else
3972 				ata_eh_qc_complete(qc);
3973 		} else {
3974 			if (qc->flags & ATA_QCFLAG_SENSE_VALID) {
3975 				ata_eh_qc_complete(qc);
3976 			} else {
3977 				/* feed zero TF to sense generation */
3978 				memset(&qc->result_tf, 0, sizeof(qc->result_tf));
3979 				ata_eh_qc_retry(qc);
3980 			}
3981 		}
3982 	}
3983 
3984 	/* make sure nr_active_links is zero after EH */
3985 	WARN_ON(ap->nr_active_links);
3986 	ap->nr_active_links = 0;
3987 }
3988 
3989 /**
3990  *	ata_do_eh - do standard error handling
3991  *	@ap: host port to handle error for
3992  *
3993  *	@prereset: prereset method (can be NULL)
3994  *	@softreset: softreset method (can be NULL)
3995  *	@hardreset: hardreset method (can be NULL)
3996  *	@postreset: postreset method (can be NULL)
3997  *
3998  *	Perform standard error handling sequence.
3999  *
4000  *	LOCKING:
4001  *	Kernel thread context (may sleep).
4002  */
4003 void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
4004 	       ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
4005 	       ata_postreset_fn_t postreset)
4006 {
4007 	struct ata_device *dev;
4008 	int rc;
4009 
4010 	ata_eh_autopsy(ap);
4011 	ata_eh_report(ap);
4012 
4013 	rc = ata_eh_recover(ap, prereset, softreset, hardreset, postreset,
4014 			    NULL);
4015 	if (rc) {
4016 		ata_for_each_dev(dev, &ap->link, ALL)
4017 			ata_dev_disable(dev);
4018 	}
4019 
4020 	ata_eh_finish(ap);
4021 }
4022 
4023 /**
4024  *	ata_std_error_handler - standard error handler
4025  *	@ap: host port to handle error for
4026  *
4027  *	Standard error handler
4028  *
4029  *	LOCKING:
4030  *	Kernel thread context (may sleep).
4031  */
4032 void ata_std_error_handler(struct ata_port *ap)
4033 {
4034 	struct ata_port_operations *ops = ap->ops;
4035 	ata_reset_fn_t hardreset = ops->hardreset;
4036 
4037 	/* ignore built-in hardreset if SCR access is not available */
4038 	if (hardreset == sata_std_hardreset && !sata_scr_valid(&ap->link))
4039 		hardreset = NULL;
4040 
4041 	ata_do_eh(ap, ops->prereset, ops->softreset, hardreset, ops->postreset);
4042 }
4043 
4044 #ifdef CONFIG_PM
4045 /**
4046  *	ata_eh_handle_port_suspend - perform port suspend operation
4047  *	@ap: port to suspend
4048  *
4049  *	Suspend @ap.
4050  *
4051  *	LOCKING:
4052  *	Kernel thread context (may sleep).
4053  */
4054 static void ata_eh_handle_port_suspend(struct ata_port *ap)
4055 {
4056 	unsigned long flags;
4057 	int rc = 0;
4058 	struct ata_device *dev;
4059 
4060 	/* are we suspending? */
4061 	spin_lock_irqsave(ap->lock, flags);
4062 	if (!(ap->pflags & ATA_PFLAG_PM_PENDING) ||
4063 	    ap->pm_mesg.event & PM_EVENT_RESUME) {
4064 		spin_unlock_irqrestore(ap->lock, flags);
4065 		return;
4066 	}
4067 	spin_unlock_irqrestore(ap->lock, flags);
4068 
4069 	WARN_ON(ap->pflags & ATA_PFLAG_SUSPENDED);
4070 
4071 	/*
4072 	 * If we have a ZPODD attached, check its zero
4073 	 * power ready status before the port is frozen.
4074 	 * Only needed for runtime suspend.
4075 	 */
4076 	if (PMSG_IS_AUTO(ap->pm_mesg)) {
4077 		ata_for_each_dev(dev, &ap->link, ENABLED) {
4078 			if (zpodd_dev_enabled(dev))
4079 				zpodd_on_suspend(dev);
4080 		}
4081 	}
4082 
4083 	/* tell ACPI we're suspending */
4084 	rc = ata_acpi_on_suspend(ap);
4085 	if (rc)
4086 		goto out;
4087 
4088 	/* suspend */
4089 	ata_eh_freeze_port(ap);
4090 
4091 	if (ap->ops->port_suspend)
4092 		rc = ap->ops->port_suspend(ap, ap->pm_mesg);
4093 
4094 	ata_acpi_set_state(ap, ap->pm_mesg);
4095  out:
4096 	/* update the flags */
4097 	spin_lock_irqsave(ap->lock, flags);
4098 
4099 	ap->pflags &= ~ATA_PFLAG_PM_PENDING;
4100 	if (rc == 0)
4101 		ap->pflags |= ATA_PFLAG_SUSPENDED;
4102 	else if (ap->pflags & ATA_PFLAG_FROZEN)
4103 		ata_port_schedule_eh(ap);
4104 
4105 	spin_unlock_irqrestore(ap->lock, flags);
4106 
4107 	return;
4108 }
4109 
4110 /**
4111  *	ata_eh_handle_port_resume - perform port resume operation
4112  *	@ap: port to resume
4113  *
4114  *	Resume @ap.
4115  *
4116  *	LOCKING:
4117  *	Kernel thread context (may sleep).
4118  */
4119 static void ata_eh_handle_port_resume(struct ata_port *ap)
4120 {
4121 	struct ata_link *link;
4122 	struct ata_device *dev;
4123 	unsigned long flags;
4124 	int rc = 0;
4125 
4126 	/* are we resuming? */
4127 	spin_lock_irqsave(ap->lock, flags);
4128 	if (!(ap->pflags & ATA_PFLAG_PM_PENDING) ||
4129 	    !(ap->pm_mesg.event & PM_EVENT_RESUME)) {
4130 		spin_unlock_irqrestore(ap->lock, flags);
4131 		return;
4132 	}
4133 	spin_unlock_irqrestore(ap->lock, flags);
4134 
4135 	WARN_ON(!(ap->pflags & ATA_PFLAG_SUSPENDED));
4136 
4137 	/*
4138 	 * Error timestamps are in jiffies which doesn't run while
4139 	 * suspended and PHY events during resume isn't too uncommon.
4140 	 * When the two are combined, it can lead to unnecessary speed
4141 	 * downs if the machine is suspended and resumed repeatedly.
4142 	 * Clear error history.
4143 	 */
4144 	ata_for_each_link(link, ap, HOST_FIRST)
4145 		ata_for_each_dev(dev, link, ALL)
4146 			ata_ering_clear(&dev->ering);
4147 
4148 	ata_acpi_set_state(ap, ap->pm_mesg);
4149 
4150 	if (ap->ops->port_resume)
4151 		rc = ap->ops->port_resume(ap);
4152 
4153 	/* tell ACPI that we're resuming */
4154 	ata_acpi_on_resume(ap);
4155 
4156 	/* update the flags */
4157 	spin_lock_irqsave(ap->lock, flags);
4158 	ap->pflags &= ~(ATA_PFLAG_PM_PENDING | ATA_PFLAG_SUSPENDED);
4159 	spin_unlock_irqrestore(ap->lock, flags);
4160 }
4161 #endif /* CONFIG_PM */
4162