| From 8d993eaa9c3c61b8a5929a7f695078a1fcfb4869 Mon Sep 17 00:00:00 2001 |
| From: Tejun Heo <tj@kernel.org> |
| Date: Sun, 1 Feb 2009 10:56:31 +0900 |
| Subject: sata_nv: ck804 has borked hardreset too |
| |
| From: Tejun Heo <tj@kernel.org> |
| |
| commit 8d993eaa9c3c61b8a5929a7f695078a1fcfb4869 upstream. |
| |
| While playing with nvraid, I found out that rmmoding and insmoding |
| often trigger hardreset failure on the first port (the second one was |
| always okay). Seriously, how diverse can you get with hardreset |
| behaviors? Anyways, make ck804 use noclassify variant too. |
| |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Jeff Garzik <jgarzik@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/ata/sata_nv.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/ata/sata_nv.c |
| +++ b/drivers/ata/sata_nv.c |
| @@ -436,11 +436,16 @@ static struct ata_port_operations nv_nf2 |
| .hardreset = nv_noclassify_hardreset, |
| }; |
| |
| -/* CK804 finally gets hardreset right */ |
| +/* For initial probing after boot and hot plugging, hardreset mostly |
| + * works fine on CK804 but curiously, reprobing on the initial port by |
| + * rescanning or rmmod/insmod fails to acquire the initial D2H Reg FIS |
| + * in somewhat undeterministic way. Use noclassify hardreset. |
| + */ |
| static struct ata_port_operations nv_ck804_ops = { |
| .inherits = &nv_common_ops, |
| .freeze = nv_ck804_freeze, |
| .thaw = nv_ck804_thaw, |
| + .hardreset = nv_noclassify_hardreset, |
| .host_stop = nv_ck804_host_stop, |
| }; |
| |