]>
Commit | Line | Data |
---|---|---|
1 | From 848e4c68c4695beae563f9a3d59fce596b466a74 Mon Sep 17 00:00:00 2001 | |
2 | From: Tejun Heo <tj@kernel.org> | |
3 | Date: Tue, 21 Oct 2008 14:26:39 +0900 | |
4 | Subject: [PATCH] libata: transfer EHI control flags to slave ehc.i | |
5 | References: bnc#441420 | |
6 | ||
7 | ATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used to control the behavior | |
8 | of EH. As only the master link is visible outside EH, these flags are | |
9 | set only for the master link although they should also apply to the | |
10 | slave link, which causes spurious EH messages during probe and | |
11 | suspend/resume. | |
12 | ||
13 | This patch transfers those two flags to slave ehc.i before performing | |
14 | slave autopsy and reporting. | |
15 | ||
16 | Signed-off-by: Tejun Heo <tj@kernel.org> | |
17 | Signed-off-by: Jeff Garzik <jgarzik@redhat.com> | |
18 | Signed-off-by: Tejun Heo <teheo@suse.de> | |
19 | --- | |
20 | drivers/ata/libata-eh.c | 5 +++++ | |
21 | include/linux/libata.h | 3 +++ | |
22 | 2 files changed, 8 insertions(+) | |
23 | ||
24 | --- a/drivers/ata/libata-eh.c | |
25 | +++ b/drivers/ata/libata-eh.c | |
26 | @@ -1973,8 +1973,13 @@ void ata_eh_autopsy(struct ata_port *ap) | |
27 | struct ata_eh_context *mehc = &ap->link.eh_context; | |
28 | struct ata_eh_context *sehc = &ap->slave_link->eh_context; | |
29 | ||
30 | + /* transfer control flags from master to slave */ | |
31 | + sehc->i.flags |= mehc->i.flags & ATA_EHI_TO_SLAVE_MASK; | |
32 | + | |
33 | + /* perform autopsy on the slave link */ | |
34 | ata_eh_link_autopsy(ap->slave_link); | |
35 | ||
36 | + /* transfer actions from slave to master and clear slave */ | |
37 | ata_eh_about_to_do(ap->slave_link, NULL, ATA_EH_ALL_ACTIONS); | |
38 | mehc->i.action |= sehc->i.action; | |
39 | mehc->i.dev_action[1] |= sehc->i.dev_action[1]; | |
40 | --- a/include/linux/libata.h | |
41 | +++ b/include/linux/libata.h | |
42 | @@ -337,6 +337,9 @@ enum { | |
43 | ||
44 | ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET, | |
45 | ||
46 | + /* mask of flags to transfer *to* the slave link */ | |
47 | + ATA_EHI_TO_SLAVE_MASK = ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET, | |
48 | + | |
49 | /* max tries if error condition is still set after ->error_handler */ | |
50 | ATA_EH_MAX_TRIES = 5, | |
51 |